Commit 34f7ad747d1796420bef179c966d9eecf1282d8e
1 parent
5076a548
Exists in
master
and in
5 other branches
Corrigindo tratamento do dbus em rexx
Showing
6 changed files
with
36 additions
and
9 deletions
Show diff stats
src/plugins/dbus3270/gobject.c
@@ -370,14 +370,19 @@ void pw3270_dbus_pa_key(PW3270Dbus *object, int key, DBusGMethodInvocation *cont | @@ -370,14 +370,19 @@ void pw3270_dbus_pa_key(PW3270Dbus *object, int key, DBusGMethodInvocation *cont | ||
370 | dbus_g_method_return(context,lib3270_get_next_unprotected(pw3270_dbus_get_session_handle(object),baddr)); | 370 | dbus_g_method_return(context,lib3270_get_next_unprotected(pw3270_dbus_get_session_handle(object),baddr)); |
371 | } | 371 | } |
372 | 372 | ||
373 | -void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context) | 373 | +void pw3270_dbus_get_clipboard(PW3270Dbus *object, DBusGMethodInvocation *context) |
374 | { | 374 | { |
375 | gchar *text; | 375 | gchar *text; |
376 | 376 | ||
377 | + trace("%s object=%p context=%p",__FUNCTION__,object,context); | ||
378 | + | ||
377 | if(pw3270_dbus_check_valid_state(object,context)) | 379 | if(pw3270_dbus_check_valid_state(object,context)) |
378 | return; | 380 | return; |
379 | 381 | ||
380 | text = gtk_clipboard_wait_for_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD)); | 382 | text = gtk_clipboard_wait_for_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD)); |
383 | + | ||
384 | + trace("Clipboard:\n%s\n",text); | ||
385 | + | ||
381 | if(!text) | 386 | if(!text) |
382 | { | 387 | { |
383 | GError *error = pw3270_dbus_get_error_from_errno(ENOENT); | 388 | GError *error = pw3270_dbus_get_error_from_errno(ENOENT); |
@@ -393,6 +398,7 @@ void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DB | @@ -393,6 +398,7 @@ void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DB | ||
393 | 398 | ||
394 | void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context) | 399 | void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context) |
395 | { | 400 | { |
401 | + trace("%s object=%p context=%p",__FUNCTION__,object,context); | ||
396 | gtk_clipboard_set_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD),(gchar *) text, -1); | 402 | gtk_clipboard_set_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD),(gchar *) text, -1); |
397 | dbus_g_method_return(context,0); | 403 | dbus_g_method_return(context,0); |
398 | } | 404 | } |
src/plugins/dbus3270/pw3270dbus.xml
@@ -64,6 +64,7 @@ | @@ -64,6 +64,7 @@ | ||
64 | <method name="setClipboard"> | 64 | <method name="setClipboard"> |
65 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> | 65 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> |
66 | <arg type="s" name="text" direction="in" /> | 66 | <arg type="s" name="text" direction="in" /> |
67 | + <arg type="i" name="result" direction="out" /> | ||
67 | </method> | 68 | </method> |
68 | <method name="getClipboard"> | 69 | <method name="getClipboard"> |
69 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> | 70 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> |
src/plugins/dbus3270/service.h
@@ -101,7 +101,7 @@ | @@ -101,7 +101,7 @@ | ||
101 | void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context); | 101 | void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context); |
102 | 102 | ||
103 | void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context); | 103 | void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context); |
104 | - void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context); | 104 | + void pw3270_dbus_get_clipboard(PW3270Dbus *object, DBusGMethodInvocation *context); |
105 | 105 | ||
106 | G_END_DECLS | 106 | G_END_DECLS |
107 | 107 |
src/plugins/dbus3270/test.sh
@@ -41,6 +41,10 @@ run_command() | @@ -41,6 +41,10 @@ run_command() | ||
41 | dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.enter | 41 | dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.enter |
42 | ;; | 42 | ;; |
43 | 43 | ||
44 | + isconnected) | ||
45 | + dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.isConnected | ||
46 | + ;; | ||
47 | + | ||
44 | *) | 48 | *) |
45 | echo "Comando $1 desconhecido" | 49 | echo "Comando $1 desconhecido" |
46 | ;; | 50 | ;; |
src/plugins/rx3270/remote.cc
@@ -192,6 +192,9 @@ remote::remote(const char *name) | @@ -192,6 +192,9 @@ remote::remote(const char *name) | ||
192 | int rc; | 192 | int rc; |
193 | char * str = strdup(name); | 193 | char * str = strdup(name); |
194 | char * ptr; | 194 | char * ptr; |
195 | + char busname[4096]; | ||
196 | + char pidname[10]; | ||
197 | + int pid = (int) getpid(); | ||
195 | 198 | ||
196 | trace("%s str=%p",__FUNCTION__,str); | 199 | trace("%s str=%p",__FUNCTION__,str); |
197 | 200 | ||
@@ -272,7 +275,18 @@ remote::remote(const char *name) | @@ -272,7 +275,18 @@ remote::remote(const char *name) | ||
272 | return; | 275 | return; |
273 | } | 276 | } |
274 | 277 | ||
275 | - rc = dbus_bus_request_name(conn, "br.com.bb." PACKAGE_NAME ".rexx", DBUS_NAME_FLAG_REPLACE_EXISTING , &err); | 278 | + memset(pidname,0,10); |
279 | + for(int f = 0; f < 9 && pid > 0;f++) | ||
280 | + { | ||
281 | + pidname[f] = 'a'+(pid % 25); | ||
282 | + pid /= 25; | ||
283 | + } | ||
284 | + | ||
285 | + snprintf(busname, 4095, "%s.rx3270.br.com.bb",pidname); | ||
286 | + | ||
287 | + trace("Busname: [%s]",busname); | ||
288 | + | ||
289 | + rc = dbus_bus_request_name(conn, busname, DBUS_NAME_FLAG_REPLACE_EXISTING , &err); | ||
276 | trace("dbus_bus_request_name rc=%d",rc); | 290 | trace("dbus_bus_request_name rc=%d",rc); |
277 | 291 | ||
278 | if (dbus_error_is_set(&err)) | 292 | if (dbus_error_is_set(&err)) |
@@ -285,11 +299,14 @@ remote::remote(const char *name) | @@ -285,11 +299,14 @@ remote::remote(const char *name) | ||
285 | 299 | ||
286 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) | 300 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) |
287 | { | 301 | { |
288 | - log("%s", "DBUS request name failed"); | 302 | + trace("%s: DBUS request for name %s failed",__FUNCTION__, busname); |
303 | + log("DBUS for \"%s\" failed",name); | ||
289 | conn = NULL; | 304 | conn = NULL; |
290 | return; | 305 | return; |
291 | } | 306 | } |
292 | 307 | ||
308 | + trace("%s: Using DBUS name %s",__FUNCTION__,busname); | ||
309 | + | ||
293 | 310 | ||
294 | #else | 311 | #else |
295 | 312 | ||
@@ -1191,11 +1208,8 @@ char * remote::get_clipboard(void) | @@ -1191,11 +1208,8 @@ char * remote::get_clipboard(void) | ||
1191 | 1208 | ||
1192 | #elif defined(HAVE_DBUS) | 1209 | #elif defined(HAVE_DBUS) |
1193 | 1210 | ||
1194 | - DBusMessage * msg = create_message("getClipboard"); | ||
1195 | - if(!msg) | ||
1196 | - return NULL; | ||
1197 | - | ||
1198 | - return get_string(call(msg)); | 1211 | + trace("%s",__FUNCTION__); |
1212 | + return query_string("getClipboard"); | ||
1199 | 1213 | ||
1200 | #endif | 1214 | #endif |
1201 | 1215 |