diff --git a/src/modules/appmenu/e_mod_appmenu_private.h b/src/modules/appmenu/e_mod_appmenu_private.h index 7bb5a16ef..d3356aeb5 100644 --- a/src/modules/appmenu/e_mod_appmenu_private.h +++ b/src/modules/appmenu/e_mod_appmenu_private.h @@ -37,6 +37,7 @@ struct _E_AppMenu_Window void appmenu_window_free(E_AppMenu_Window *window); void appmenu_dbus_registrar_server_init(E_AppMenu_Context *ctx); +void appmenu_dbus_registrar_server_shutdown(E_AppMenu_Context *ctx); void appmenu_application_monitor(void *data, const char *bus, const char *old, const char *new); void appmenu_menu_render(E_AppMenu_Context *ctxt EINA_UNUSED, E_AppMenu_Window *w); void appmenu_menu_of_instance_render(E_AppMenu_Instance *inst, E_AppMenu_Window *window); diff --git a/src/modules/appmenu/e_mod_dbus_registrar_server.c b/src/modules/appmenu/e_mod_dbus_registrar_server.c index 096b635a7..2a9f03482 100644 --- a/src/modules/appmenu/e_mod_dbus_registrar_server.c +++ b/src/modules/appmenu/e_mod_dbus_registrar_server.c @@ -195,3 +195,11 @@ appmenu_dbus_registrar_server_init(E_AppMenu_Context *ctx) edbus_name_request(ctx->conn, REGISTRAR_BUS, EDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING, NULL, NULL); } + +void +appmenu_dbus_registrar_server_shutdown(E_AppMenu_Context *ctx) +{ + edbus_service_interface_unregister(ctx->iface); + edbus_name_release(ctx->conn, REGISTRAR_BUS, NULL, NULL); + ctx->iface = NULL; +} diff --git a/src/modules/appmenu/e_mod_main.c b/src/modules/appmenu/e_mod_main.c index 028f5746a..8ad6a70db 100644 --- a/src/modules/appmenu/e_mod_main.c +++ b/src/modules/appmenu/e_mod_main.c @@ -193,7 +193,7 @@ e_modapi_shutdown(E_Module *m) EINA_LIST_FOREACH_SAFE(ctxt->windows, l, l2, w) appmenu_window_free(w); - edbus_service_interface_unregister(ctxt->iface); + appmenu_dbus_registrar_server_shutdown(ctxt); edbus_connection_unref(ctxt->conn); edbus_shutdown(); free(ctxt);