diff --git a/src/plugins/dbus3270/gobject.c b/src/plugins/dbus3270/gobject.c
index f3b5d62..e500fad 100644
--- a/src/plugins/dbus3270/gobject.c
+++ b/src/plugins/dbus3270/gobject.c
@@ -370,14 +370,19 @@ void pw3270_dbus_pa_key(PW3270Dbus *object, int key, DBusGMethodInvocation *cont
dbus_g_method_return(context,lib3270_get_next_unprotected(pw3270_dbus_get_session_handle(object),baddr));
}
-void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context)
+void pw3270_dbus_get_clipboard(PW3270Dbus *object, DBusGMethodInvocation *context)
{
gchar *text;
+ trace("%s object=%p context=%p",__FUNCTION__,object,context);
+
if(pw3270_dbus_check_valid_state(object,context))
return;
text = gtk_clipboard_wait_for_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD));
+
+ trace("Clipboard:\n%s\n",text);
+
if(!text)
{
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
void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context)
{
+ trace("%s object=%p context=%p",__FUNCTION__,object,context);
gtk_clipboard_set_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD),(gchar *) text, -1);
dbus_g_method_return(context,0);
}
diff --git a/src/plugins/dbus3270/pw3270dbus.xml b/src/plugins/dbus3270/pw3270dbus.xml
index 80a9cb5..e627749 100644
--- a/src/plugins/dbus3270/pw3270dbus.xml
+++ b/src/plugins/dbus3270/pw3270dbus.xml
@@ -64,6 +64,7 @@
+
diff --git a/src/plugins/dbus3270/service.h b/src/plugins/dbus3270/service.h
index 247f36c..43fc7cc 100644
--- a/src/plugins/dbus3270/service.h
+++ b/src/plugins/dbus3270/service.h
@@ -101,7 +101,7 @@
void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context);
void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context);
- void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context);
+ void pw3270_dbus_get_clipboard(PW3270Dbus *object, DBusGMethodInvocation *context);
G_END_DECLS
diff --git a/src/plugins/dbus3270/test.sh b/src/plugins/dbus3270/test.sh
index adb9155..f56aa6b 100755
--- a/src/plugins/dbus3270/test.sh
+++ b/src/plugins/dbus3270/test.sh
@@ -41,6 +41,10 @@ run_command()
dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.enter
;;
+ isconnected)
+ dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.isConnected
+ ;;
+
*)
echo "Comando $1 desconhecido"
;;
diff --git a/src/plugins/rx3270/remote.cc b/src/plugins/rx3270/remote.cc
index 5307e57..024a188 100644
--- a/src/plugins/rx3270/remote.cc
+++ b/src/plugins/rx3270/remote.cc
@@ -192,6 +192,9 @@ remote::remote(const char *name)
int rc;
char * str = strdup(name);
char * ptr;
+ char busname[4096];
+ char pidname[10];
+ int pid = (int) getpid();
trace("%s str=%p",__FUNCTION__,str);
@@ -272,7 +275,18 @@ remote::remote(const char *name)
return;
}
- rc = dbus_bus_request_name(conn, "br.com.bb." PACKAGE_NAME ".rexx", DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
+ memset(pidname,0,10);
+ for(int f = 0; f < 9 && pid > 0;f++)
+ {
+ pidname[f] = 'a'+(pid % 25);
+ pid /= 25;
+ }
+
+ snprintf(busname, 4095, "%s.rx3270.br.com.bb",pidname);
+
+ trace("Busname: [%s]",busname);
+
+ rc = dbus_bus_request_name(conn, busname, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
trace("dbus_bus_request_name rc=%d",rc);
if (dbus_error_is_set(&err))
@@ -285,11 +299,14 @@ remote::remote(const char *name)
if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
{
- log("%s", "DBUS request name failed");
+ trace("%s: DBUS request for name %s failed",__FUNCTION__, busname);
+ log("DBUS for \"%s\" failed",name);
conn = NULL;
return;
}
+ trace("%s: Using DBUS name %s",__FUNCTION__,busname);
+
#else
@@ -1191,11 +1208,8 @@ char * remote::get_clipboard(void)
#elif defined(HAVE_DBUS)
- DBusMessage * msg = create_message("getClipboard");
- if(!msg)
- return NULL;
-
- return get_string(call(msg));
+ trace("%s",__FUNCTION__);
+ return query_string("getClipboard");
#endif
diff --git a/src/plugins/rx3270/sample/clipboard.rex b/src/plugins/rx3270/sample/clipboard.rex
index e4a4e3c..1a8fdf6 100644
--- a/src/plugins/rx3270/sample/clipboard.rex
+++ b/src/plugins/rx3270/sample/clipboard.rex
@@ -5,6 +5,8 @@
*
*/
+trace "?R"
+
host = .rx3270~new("pw3270:a")
if host~connected() = 0 then
--
libgit2 0.21.2