Commit 87b4a51aa24ecae42f3608730b8f850c2c614a3d
1 parent
ebebd49f
Exists in
master
and in
1 other branch
Refactoring D-Bus IPC module.
Showing
2 changed files
with
22 additions
and
14 deletions
Show diff stats
src/plugin/linux/main.c
| ... | ... | @@ -36,6 +36,7 @@ |
| 36 | 36 | #include <dbus/dbus-glib-lowlevel.h> |
| 37 | 37 | #include <dbus/dbus-glib.h> |
| 38 | 38 | |
| 39 | +#include <v3270.h> | |
| 39 | 40 | #include <pw3270.h> |
| 40 | 41 | #include <pw3270/plugin.h> |
| 41 | 42 | |
| ... | ... | @@ -53,12 +54,13 @@ |
| 53 | 54 | |
| 54 | 55 | /*---[ Implement ]-------------------------------------------------------------------------------*/ |
| 55 | 56 | |
| 56 | - LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window, GtkWidget G_GNUC_UNUSED(*terminal)) | |
| 57 | + LIB3270_EXPORT int pw3270_plugin_start(GtkWidget G_GNUC_UNUSED(*window), GtkWidget *terminal) | |
| 57 | 58 | { |
| 58 | - GError * error = NULL; | |
| 59 | - guint result; | |
| 60 | - char session_id = 0; | |
| 61 | - char id = 'a'; | |
| 59 | + GError * error = NULL; | |
| 60 | + guint result; | |
| 61 | + char session_id = 0; | |
| 62 | + char id = 'a'; | |
| 63 | + const gchar * name = "pw3270"; | |
| 62 | 64 | |
| 63 | 65 | connection = dbus_g_bus_get_private(DBUS_BUS_SESSION, g_main_context_default(), &error); |
| 64 | 66 | if(error) |
| ... | ... | @@ -88,7 +90,7 @@ |
| 88 | 90 | { |
| 89 | 91 | gboolean has_owner = FALSE; |
| 90 | 92 | |
| 91 | - service_name = g_strdup_printf("br.com.bb.%s.%c",pw3270_get_session_name(window),(int) id); | |
| 93 | + service_name = g_strdup_printf("br.com.bb.%s.%c",name,(int) id); | |
| 92 | 94 | |
| 93 | 95 | org_freedesktop_DBus_name_has_owner(proxy, service_name, &has_owner, NULL); |
| 94 | 96 | |
| ... | ... | @@ -129,16 +131,16 @@ |
| 129 | 131 | |
| 130 | 132 | if(session_id) |
| 131 | 133 | { |
| 132 | - gchar * path = g_strdup_printf("/br/com/bb/%s",pw3270_get_session_name(window)); | |
| 133 | - gchar * session = g_strdup_printf("%s:%c",pw3270_get_session_name(window),g_ascii_toupper(session_id)); | |
| 134 | - pw3270_set_session_name(window,session); | |
| 135 | - g_free(session); | |
| 134 | + g_autofree gchar * path = g_strdup_printf("/br/com/bb/%s",name); | |
| 135 | + g_autofree gchar * session = g_strdup_printf("%s:%c",name,g_ascii_toupper(session_id)); | |
| 136 | 136 | |
| 137 | - g_message("DBUS service path is %s",path); | |
| 137 | + // pw3270_set_session_name(window,session); | |
| 138 | + v3270_set_session_name(terminal,session); | |
| 139 | + | |
| 140 | + g_message("DBUS service path is %s, session name is %s",path,session); | |
| 138 | 141 | |
| 139 | 142 | pw3270_dbus_register_object(connection,proxy,PW3270_TYPE_DBUS,&dbus_glib_pw3270_dbus_object_info,path); |
| 140 | 143 | |
| 141 | - g_free(path); | |
| 142 | 144 | } |
| 143 | 145 | |
| 144 | 146 | return 0; |
| ... | ... | @@ -146,10 +148,15 @@ |
| 146 | 148 | |
| 147 | 149 | LIB3270_EXPORT int pw3270_plugin_stop(GtkWidget G_GNUC_UNUSED(*window), GtkWidget G_GNUC_UNUSED(*terminal)) |
| 148 | 150 | { |
| 149 | - if(service_name) | |
| 151 | + if(proxy) | |
| 150 | 152 | { |
| 151 | - // org_freedesktop_DBus_release_name | |
| 153 | + debug("%s: Releasing proxy",__FUNCTION__); | |
| 154 | + g_object_unref(proxy); | |
| 155 | + proxy = NULL; | |
| 156 | + } | |
| 152 | 157 | |
| 158 | + if(service_name) | |
| 159 | + { | |
| 153 | 160 | g_free(service_name); |
| 154 | 161 | service_name = NULL; |
| 155 | 162 | } | ... | ... |
src/testprogram/testprogram.c