From b99fca7671b9d30833e86838bd9b39ac36da1ea1 Mon Sep 17 00:00:00 2001 From: Wu Xiaotian Date: Sun, 28 Jun 2020 20:46:58 +0800 Subject: msd: migrate from dbus-glib to GDBus --- mate-settings-daemon/Makefile.am | 21 -- mate-settings-daemon/main.c | 459 +++++++++-------------- mate-settings-daemon/mate-settings-manager.c | 121 ++++-- mate-settings-daemon/mate-settings-manager.h | 25 +- mate-settings-daemon/mate-settings-manager.xml | 1 - mate-settings-daemon/mate-settings-plugin-info.c | 4 +- 6 files changed, 283 insertions(+), 348 deletions(-) diff --git a/mate-settings-daemon/Makefile.am b/mate-settings-daemon/Makefile.am index 4acc62f..0dda4ac 100644 --- a/mate-settings-daemon/Makefile.am +++ b/mate-settings-daemon/Makefile.am @@ -41,20 +41,8 @@ msddir = $(libexecdir) msd_PROGRAMS = \ mate-settings-daemon -mate-settings-manager-glue.h: mate-settings-manager.xml Makefile.am - $(AM_V_GEN) dbus-binding-tool --prefix=mate_settings_manager --mode=glib-server $< > $@ - -mate-settings-client.h: mate-settings-manager.xml Makefile.am - $(AM_V_GEN) dbus-binding-tool --prefix=mate_settings_manager --mode=glib-client $< > $@ - -BUILT_SOURCES = \ - mate-settings-manager-glue.h \ - mate-settings-client.h \ - $(NULL) - apidir = $(includedir)/mate-settings-daemon api_DATA = \ - mate-settings-client.h \ mate-settings-plugin.h mate_settings_daemon_SOURCES = \ @@ -87,15 +75,6 @@ mate_settings_daemon_LDADD = \ $(MATE_DESKTOP_LIBS) \ $(LIBNOTIFY_LIBS) -EXTRA_DIST = \ - $(Dbusapi_DATA) \ - mate-settings-manager.xml \ - $(NULL) - -CLEANFILES = \ - $(BUILT_SOURCES) \ - $(NULL) - -include $(top_srcdir)/git.mk # vim: ts=8 diff --git a/mate-settings-daemon/main.c b/mate-settings-daemon/main.c index dcff17c..11d8687 100644 --- a/mate-settings-daemon/main.c +++ b/mate-settings-daemon/main.c @@ -31,11 +31,10 @@ #include #include +#include +#include #include -#include -#include - #ifdef HAVE_LIBNOTIFY #include #endif /* HAVE_LIBNOTIFY */ @@ -56,16 +55,16 @@ #define MATE_SESSION_PRIVATE_DBUS_INTERFACE "org.gnome.SessionManager.ClientPrivate" /* this is kept only for compatibility with custom .desktop files */ -static gboolean no_daemon = TRUE; static gboolean replace = FALSE; static gboolean debug = FALSE; static gboolean do_timed_exit = FALSE; +static guint name_id = 0; static int term_signal_pipe_fds[2]; +static MateSettingsManager *manager = NULL; static GOptionEntry entries[] = { { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, { "replace", 0, 0, G_OPTION_ARG_NONE, &replace, N_("Replace the current daemon"), NULL }, - { "no-daemon", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &no_daemon, N_("Don't become a daemon"), NULL }, { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL }, { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL } }; @@ -73,207 +72,177 @@ static GOptionEntry entries[] = { static gboolean timed_exit_cb (void) { + g_debug ("Doing timed exit"); gtk_main_quit (); return G_SOURCE_REMOVE; } -static DBusGProxy * -get_bus_proxy (DBusGConnection *connection) +static void +stop_manager (void) { - DBusGProxy *bus_proxy; - - bus_proxy = dbus_g_proxy_new_for_name (connection, - DBUS_SERVICE_DBUS, - DBUS_PATH_DBUS, - DBUS_INTERFACE_DBUS); - - return bus_proxy; + gtk_main_quit (); } -static gboolean -acquire_name_on_proxy (DBusGProxy *bus_proxy) +static void +on_session_over (GDBusProxy *proxy, + gchar *sender_name, + gchar *signal_name, + GVariant *parameters, + gpointer user_data) { - GError *error; - guint result; - gboolean res; - gboolean ret; - guint32 flags; - - ret = FALSE; - - flags = DBUS_NAME_FLAG_DO_NOT_QUEUE|DBUS_NAME_FLAG_ALLOW_REPLACEMENT; - if (replace) - flags |= DBUS_NAME_FLAG_REPLACE_EXISTING; - - error = NULL; - res = dbus_g_proxy_call (bus_proxy, - "RequestName", - &error, - G_TYPE_STRING, MSD_DBUS_NAME, - G_TYPE_UINT, flags, - G_TYPE_INVALID, - G_TYPE_UINT, &result, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to acquire %s: %s", MSD_DBUS_NAME, error->message); - g_error_free (error); - } else { - g_warning ("Failed to acquire %s", MSD_DBUS_NAME); - } - goto out; + if (g_strcmp0 (signal_name, "SessionOver") == 0) { + g_debug ("Got a SessionOver signal - stopping"); + stop_manager (); } +} - if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { - if (error != NULL) { - g_warning ("Failed to acquire %s: %s", MSD_DBUS_NAME, error->message); - g_error_free (error); - } else { - g_warning ("Failed to acquire %s", MSD_DBUS_NAME); - } - goto out; - } - - ret = TRUE; - - out: - return ret; +static void +respond_to_end_session (GDBusProxy *proxy) +{ + /* we must answer with "EndSessionResponse" */ + g_dbus_proxy_call (proxy, "EndSessionResponse", + g_variant_new ("(bs)", + TRUE, ""), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); } -static DBusHandlerResult -bus_message_handler (DBusConnection *connection, - DBusMessage *message, - void *user_data) +static void +client_proxy_signal_cb (GDBusProxy *proxy, + gchar *sender_name, + gchar *signal_name, + GVariant *parameters, + gpointer user_data) { - if (dbus_message_is_signal (message, - DBUS_INTERFACE_LOCAL, - "Disconnected")) { - gtk_main_quit (); - return DBUS_HANDLER_RESULT_HANDLED; + if (g_strcmp0 (signal_name, "QueryEndSession") == 0) { + g_debug ("Got QueryEndSession signal"); + respond_to_end_session (proxy); + } else if (g_strcmp0 (signal_name, "EndSession") == 0) { + g_debug ("Got EndSession signal"); + respond_to_end_session (proxy); + } else if (g_strcmp0 (signal_name, "Stop") == 0) { + g_debug ("Got Stop signal"); + stop_manager (); } - else if (dbus_message_is_signal (message, - DBUS_INTERFACE_DBUS, - "NameLost")) { - g_warning ("D-Bus name lost, quitting"); - gtk_main_quit (); - return DBUS_HANDLER_RESULT_HANDLED; - } - - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } -static DBusGConnection * -get_session_bus (void) +static void +got_client_proxy (GObject *object, + GAsyncResult *res, + gpointer user_data) { - GError *error; - DBusGConnection *bus; - DBusConnection *connection; + GDBusProxy *client_proxy; + GError *error = NULL; - error = NULL; - bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (bus == NULL) { - g_warning ("Couldn't connect to session bus: %s", - error->message); + client_proxy = g_dbus_proxy_new_for_bus_finish (res, &error); + + if (error != NULL) { + g_debug ("Unable to get the session client proxy: %s", error->message); g_error_free (error); - goto out; + return; } - connection = dbus_g_connection_get_connection (bus); - dbus_connection_add_filter (connection, - (DBusHandleMessageFunction) - bus_message_handler, - NULL, NULL); - - dbus_connection_set_exit_on_disconnect (connection, FALSE); - - out: - return bus; + g_signal_connect (client_proxy, "g-signal", + G_CALLBACK (client_proxy_signal_cb), manager); } -static gboolean -bus_register (DBusGConnection *bus) +static void +start_settings_manager (void) { - DBusGProxy *bus_proxy; - gboolean ret; - - mate_settings_profile_start (NULL); - - ret = FALSE; - - bus_proxy = get_bus_proxy (bus); + gboolean res; + GError *error; - if (bus_proxy == NULL) { - g_warning ("Could not construct bus_proxy object"); - goto out; + mate_settings_profile_start ("mate_settings_manager_new"); + manager = mate_settings_manager_new (); + mate_settings_profile_end ("mate_settings_manager_new"); + if (manager == NULL) { + g_warning ("Unable to register object"); + gtk_main_quit (); } - ret = acquire_name_on_proxy (bus_proxy); - g_object_unref (bus_proxy); - - if (!ret) { - g_warning ("Could not acquire name"); - goto out; + /* If we aren't started by dbus then load the plugins automatically during the + * Initialization phase. Otherwise, wait for an Awake etc. */ + if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) { + error = NULL; + res = mate_settings_manager_start (manager, PLUGIN_LOAD_INIT, &error); + if (! res) { + g_warning ("Unable to start: %s", error->message); + g_error_free (error); + } } - - g_debug ("Successfully connected to D-Bus"); - - out: - mate_settings_profile_end (NULL); - - return ret; } static void -on_session_over (DBusGProxy *proxy, MateSettingsManager *manager) -{ - /* not used, see on_session_end instead */ -} - -static void -on_session_query_end (DBusGProxy *proxy, guint flags, MateSettingsManager *manager) +on_client_registered (GObject *source_object, + GAsyncResult *res, + gpointer user_data) { + GVariant *variant; GError *error = NULL; - gboolean ret = FALSE; - - /* send response */ - ret = dbus_g_proxy_call (proxy, "EndSessionResponse", &error, - G_TYPE_BOOLEAN, TRUE /* ok */, - G_TYPE_STRING, NULL /* reason */, - G_TYPE_INVALID, - G_TYPE_INVALID); - if (!ret) { - g_warning ("failed to send session response: %s", error->message); + gchar *object_path = NULL; + + variant = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error); + if (error != NULL) { + g_warning ("Unable to register client: %s", error->message); g_error_free (error); + } else { + g_variant_get (variant, "(o)", &object_path); + + g_debug ("Registered client at path %s", object_path); + + g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION, 0, NULL, + MATE_SESSION_DBUS_NAME, + object_path, + MATE_SESSION_PRIVATE_DBUS_INTERFACE, + NULL, + got_client_proxy, + manager); + + g_free (object_path); + g_variant_unref (variant); } } static void -on_session_end (DBusGProxy *proxy, guint flags, MateSettingsManager *manager) +register_with_mate_session (void) { + const char *startup_id; GError *error = NULL; - gboolean ret = FALSE; - - /* send response */ - ret = dbus_g_proxy_call (proxy, "EndSessionResponse", &error, - G_TYPE_BOOLEAN, TRUE /* ok */, - G_TYPE_STRING, NULL /* reason */, - G_TYPE_INVALID, - G_TYPE_INVALID); - if (!ret) { - g_warning ("failed to send session response: %s", error->message); + GDBusProxy *proxy; + + proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + MATE_SESSION_DBUS_NAME, + MATE_SESSION_DBUS_OBJECT, + MATE_SESSION_DBUS_INTERFACE, + NULL, + &error); + + if (proxy == NULL) { + g_warning ("Unable to contact session manager daemon: %s\n", error->message); g_error_free (error); } - - mate_settings_manager_stop (manager); - gtk_main_quit (); + g_signal_connect (G_OBJECT (proxy), "g-signal", + G_CALLBACK (on_session_over), NULL); + startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); + g_dbus_proxy_call (proxy, + "RegisterClient", + g_variant_new ("(ss)", "mate-settings-daemon", startup_id ? startup_id : ""), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + (GAsyncReadyCallback) on_client_registered, + manager); } -static void -on_term_signal (int signal) +static gboolean +on_term_signal (gpointer signal) { /* Wake up main loop to tell it to shutdown */ close (term_signal_pipe_fds[1]); term_signal_pipe_fds[1] = -1; + return G_SOURCE_REMOVE; } static gboolean @@ -291,7 +260,7 @@ on_term_signal_pipe_closed (GIOChannel *source, } static void -watch_for_term_signal (MateSettingsManager *manager) +watch_for_term_signal (void) { GIOChannel *channel; @@ -308,90 +277,66 @@ watch_for_term_signal (MateSettingsManager *manager) g_io_add_watch (channel, G_IO_HUP, on_term_signal_pipe_closed, manager); g_io_channel_unref (channel); - signal (SIGTERM, on_term_signal); - + g_unix_signal_add (SIGTERM, on_term_signal, manager); } static void -set_session_over_handler (DBusGConnection *bus, MateSettingsManager *manager) +name_acquired_handler (GDBusConnection *connection, + const gchar *name, + gpointer user_data) { - DBusGProxy *session_proxy; - DBusGProxy *private_proxy; - gchar *client_id = NULL; - const char *startup_id; - GError *error = NULL; gboolean res; + g_autoptr (GError) error = NULL; - g_assert (bus != NULL); + start_settings_manager (); + register_with_mate_session (); - mate_settings_profile_start (NULL); + /* If we aren't started by dbus then load the plugins automatically after + * mate-settings-daemon has registered itself. Otherwise, wait for an Awake etc. */ + if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) { + error = NULL; + res = mate_settings_manager_start (manager, PLUGIN_LOAD_DEFER, &error); + if (! res) { + g_warning ("Unable to start: %s", error->message); + g_error_free (error); + gtk_main_quit (); + } + } - session_proxy = - dbus_g_proxy_new_for_name (bus, - MATE_SESSION_DBUS_NAME, - MATE_SESSION_DBUS_OBJECT, - MATE_SESSION_DBUS_INTERFACE); + watch_for_term_signal (); +} - dbus_g_object_register_marshaller ( - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - G_TYPE_INVALID); +static void +name_lost_handler (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + /* Name was already taken, or the bus went away */ - dbus_g_proxy_add_signal (session_proxy, - "SessionOver", - G_TYPE_INVALID); + g_warning ("Name taken or bus went away - shutting down"); - dbus_g_proxy_connect_signal (session_proxy, - "SessionOver", - G_CALLBACK (on_session_over), - manager, - NULL); + gtk_main_quit (); - /* Register with mate-session */ - startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); - if (startup_id != NULL && *startup_id != '\0') { - res = dbus_g_proxy_call (session_proxy, - "RegisterClient", - &error, - G_TYPE_STRING, "mate-settings-daemon", - G_TYPE_STRING, startup_id, - G_TYPE_INVALID, - DBUS_TYPE_G_OBJECT_PATH, &client_id, - G_TYPE_INVALID); - if (!res) { - g_warning ("failed to register client '%s': %s", startup_id, error->message); - g_error_free (error); - } - else { - /* get org.gnome.SessionManager.ClientPrivate interface */ - private_proxy = dbus_g_proxy_new_for_name_owner (bus, MATE_SESSION_DBUS_NAME, - client_id, MATE_SESSION_PRIVATE_DBUS_INTERFACE, - &error); - if (private_proxy == NULL) { - g_warning ("DBUS error: %s", error->message); - g_error_free (error); - } - else { - - /* get QueryEndSession */ - dbus_g_proxy_add_signal (private_proxy, "QueryEndSession", G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_connect_signal (private_proxy, "QueryEndSession", - G_CALLBACK (on_session_query_end), - manager, NULL); - - /* get EndSession */ - dbus_g_proxy_add_signal (private_proxy, "EndSession", G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_connect_signal (private_proxy, "EndSession", - G_CALLBACK (on_session_end), manager, NULL); - - } - - g_free (client_id); - } - } +} - watch_for_term_signal (manager); - mate_settings_profile_end (NULL); +static void +bus_register (void) +{ + GBusNameOwnerFlags flags; + + flags = G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT; + + if (replace) + flags |= G_BUS_NAME_OWNER_FLAGS_REPLACE; + + name_id = g_bus_own_name (G_BUS_TYPE_SESSION, + MSD_DBUS_NAME, + flags, + NULL, + (GBusNameAcquiredCallback) name_acquired_handler, + (GBusNameLostCallback) name_lost_handler, + NULL, + NULL); } static void @@ -461,10 +406,6 @@ static void debug_changed (GSettings *settings, int main (int argc, char *argv[]) { - MateSettingsManager *manager; - DBusGConnection *bus; - gboolean res; - GError *error; GSettings *debug_settings = NULL; manager = NULL; @@ -499,52 +440,12 @@ main (int argc, char *argv[]) g_log_set_default_handler (msd_log_default_handler, NULL); - bus = get_session_bus (); - if (bus == NULL) { - g_warning ("Could not get a connection to the bus"); - goto out; - } - - if (! bus_register (bus)) { - goto out; - } + bus_register (); #ifdef HAVE_LIBNOTIFY notify_init ("mate-settings-daemon"); #endif /* HAVE_LIBNOTIFY */ - mate_settings_profile_start ("mate_settings_manager_new"); - manager = mate_settings_manager_new (); - mate_settings_profile_end ("mate_settings_manager_new"); - if (manager == NULL) { - g_warning ("Unable to register object"); - goto out; - } - - /* If we aren't started by dbus then load the plugins automatically during the - * Initialization phase. Otherwise, wait for an Awake etc. */ - if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) { - error = NULL; - res = mate_settings_manager_start (manager, PLUGIN_LOAD_INIT, &error); - if (! res) { - g_warning ("Unable to start: %s", error->message); - g_error_free (error); - } - } - - set_session_over_handler (bus, manager); - - /* If we aren't started by dbus then load the plugins automatically after - * mate-settings-daemon has registered itself. Otherwise, wait for an Awake etc. */ - if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) { - error = NULL; - res = mate_settings_manager_start (manager, PLUGIN_LOAD_DEFER, &error); - if (! res) { - g_warning ("Unable to start: %s", error->message); - g_error_free (error); - goto out; - } - } if (do_timed_exit) { g_timeout_add_seconds (30, G_SOURCE_FUNC (timed_exit_cb), NULL); @@ -552,12 +453,12 @@ main (int argc, char *argv[]) gtk_main (); - out: + g_debug ("Shutting down"); - if (bus != NULL) { - dbus_g_connection_unref (bus); + if (name_id > 0) { + g_bus_unown_name (name_id); + name_id = 0; } - if (manager != NULL) { g_object_unref (manager); } diff --git a/mate-settings-daemon/mate-settings-manager.c b/mate-settings-daemon/mate-settings-manager.c index 7796e3d..d32a446 100644 --- a/mate-settings-daemon/mate-settings-manager.c +++ b/mate-settings-daemon/mate-settings-manager.c @@ -26,28 +26,45 @@ #include #include -#include #include -#include -#define DBUS_API_SUBJECT_TO_CHANGE -#include -#include #include +#include #include "mate-settings-plugin-info.h" #include "mate-settings-manager.h" -#include "mate-settings-manager-glue.h" #include "mate-settings-profile.h" #define MSD_MANAGER_DBUS_PATH "/org/mate/SettingsDaemon" +#define MSD_MANAGER_DBUS_NAME "org.mate.SettingsDaemon" #define DEFAULT_SETTINGS_PREFIX "org.mate.SettingsDaemon" #define PLUGIN_EXT ".mate-settings-plugin" +static void +mate_settings_manager_finalize (GObject *object); + +static const gchar introspection_xml[] = +"" +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +""; + struct MateSettingsManagerPrivate { - DBusGConnection *connection; + GDBusNodeInfo *introspection_data; + GDBusConnection *connection; + guint dbus_register_object_id; + GCancellable *cancellable; + GSList *plugins; gint init_load_priority; gint load_init_flag; @@ -61,8 +78,6 @@ enum { static guint signals [LAST_SIGNAL] = { 0, }; -static void mate_settings_manager_finalize (GObject *object); - G_DEFINE_TYPE_WITH_PRIVATE (MateSettingsManager, mate_settings_manager, G_TYPE_OBJECT) static gpointer manager_object = NULL; @@ -318,23 +333,78 @@ mate_settings_manager_awake (MateSettingsManager *manager, return mate_settings_manager_start (manager, PLUGIN_LOAD_ALL, error); } -static gboolean -register_manager (MateSettingsManager *manager) +static void +handle_method_call (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) { + MateSettingsManager *manager = (MateSettingsManager *) user_data; GError *error = NULL; - manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (manager->priv->connection == NULL) { - if (error != NULL) { - g_critical ("error getting system bus: %s", error->message); - g_error_free (error); - } - return FALSE; + g_debug ("Calling method '%s' for settings daemon", method_name); + + if (g_strcmp0 (method_name, "Awake") == 0) { + if (mate_settings_manager_awake (manager, &error) == FALSE) + g_dbus_method_invocation_return_gerror (invocation, error); + else + g_dbus_method_invocation_return_value (invocation, NULL); + } else if (g_strcmp0 (method_name, "Start") == 0) { + if (mate_settings_manager_start (manager, PLUGIN_LOAD_INIT, &error) == FALSE) + g_dbus_method_invocation_return_gerror (invocation, error); + else + g_dbus_method_invocation_return_value (invocation, NULL); } +} - dbus_g_connection_register_g_object (manager->priv->connection, MSD_MANAGER_DBUS_PATH, G_OBJECT (manager)); +static const GDBusInterfaceVTable interface_vtable = +{ + .method_call = handle_method_call +}; - return TRUE; +static void +on_bus_gotten (GObject *source_object, + GAsyncResult *res, + MateSettingsManager *manager) +{ + GDBusConnection *connection; + GError *error = NULL; + + connection = g_bus_get_finish (res, &error); + if (connection == NULL) { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + g_warning ("Could not get session bus: %s", error->message); + g_error_free (error); + return; + } + manager->priv->connection = connection; + + manager->priv->dbus_register_object_id = g_dbus_connection_register_object (connection, + MSD_MANAGER_DBUS_PATH, + manager->priv->introspection_data->interfaces[0], + &interface_vtable, + manager, + NULL, + NULL); + g_assert (manager->priv->dbus_register_object_id > 0); +} + +static void +register_manager (MateSettingsManager *manager) +{ + manager->priv->introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); + g_assert (manager->priv->introspection_data != NULL); + + manager->priv->cancellable = g_cancellable_new (); + + g_bus_get (G_BUS_TYPE_SESSION, + manager->priv->cancellable, + (GAsyncReadyCallback) on_bus_gotten, + manager); } gboolean @@ -362,6 +432,7 @@ mate_settings_manager_start (MateSettingsManager *manager, manager->priv->load_init_flag = load_init_flag; _load_all (manager); + mate_settings_profile_end ("initializing plugins"); ret = TRUE; out: @@ -418,8 +489,6 @@ mate_settings_manager_class_init (MateSettingsManagerClass *klass) g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); - - dbus_g_object_type_install_info (MATE_TYPE_SETTINGS_MANAGER, &dbus_glib_mate_settings_manager_object_info); } static void @@ -461,17 +530,11 @@ mate_settings_manager_new (void) if (manager_object != NULL) { g_object_ref (manager_object); } else { - gboolean res; - manager_object = g_object_new (MATE_TYPE_SETTINGS_MANAGER, NULL); g_object_add_weak_pointer (manager_object, (gpointer *) &manager_object); - res = register_manager (manager_object); - if (! res) { - g_object_unref (manager_object); - return NULL; - } + register_manager (manager_object); } return MATE_SETTINGS_MANAGER (manager_object); diff --git a/mate-settings-daemon/mate-settings-manager.h b/mate-settings-daemon/mate-settings-manager.h index f8737e6..fbcd294 100644 --- a/mate-settings-daemon/mate-settings-manager.h +++ b/mate-settings-daemon/mate-settings-manager.h @@ -24,9 +24,7 @@ #include -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS #define MATE_TYPE_SETTINGS_MANAGER (mate_settings_manager_get_type ()) #define MATE_SETTINGS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MATE_TYPE_SETTINGS_MANAGER, MateSettingsManager)) @@ -67,21 +65,18 @@ enum #define MATE_SETTINGS_MANAGER_ERROR mate_settings_manager_error_quark () -GQuark mate_settings_manager_error_quark (void); -GType mate_settings_manager_get_type (void); +GQuark mate_settings_manager_error_quark (void); +GType mate_settings_manager_get_type (void); MateSettingsManager * mate_settings_manager_new (void); -gboolean mate_settings_manager_start (MateSettingsManager *manager, - gint load_init_flag, - GError **error); -void mate_settings_manager_stop (MateSettingsManager *manager); +gboolean mate_settings_manager_start (MateSettingsManager *manager, + gint load_init_flag, + GError **error); +void mate_settings_manager_stop (MateSettingsManager *manager); +gboolean mate_settings_manager_awake (MateSettingsManager *manager, + GError **error); -gboolean mate_settings_manager_awake (MateSettingsManager *manager, - GError **error); - -#ifdef __cplusplus -} -#endif +G_END_DECLS #endif /* __MATE_SETTINGS_MANAGER_H */ diff --git a/mate-settings-daemon/mate-settings-manager.xml b/mate-settings-daemon/mate-settings-manager.xml index b1e316f..00c9f25 100644 --- a/mate-settings-daemon/mate-settings-manager.xml +++ b/mate-settings-daemon/mate-settings-manager.xml @@ -1,7 +1,6 @@ - diff --git a/mate-settings-daemon/mate-settings-plugin-info.c b/mate-settings-daemon/mate-settings-plugin-info.c index b258612..50508cb 100644 --- a/mate-settings-daemon/mate-settings-plugin-info.c +++ b/mate-settings-daemon/mate-settings-plugin-info.c @@ -33,8 +33,6 @@ #include "mate-settings-plugin.h" #include "mate-settings-profile.h" -#define MATE_SETTINGS_PLUGIN_INFO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MATE_TYPE_SETTINGS_PLUGIN_INFO, MateSettingsPluginInfoPrivate)) - #define PLUGIN_GROUP "MATE Settings Plugin" #define PLUGIN_PRIORITY_MAX 1 @@ -148,7 +146,7 @@ mate_settings_plugin_info_class_init (MateSettingsPluginInfoClass *klass) static void mate_settings_plugin_info_init (MateSettingsPluginInfo *info) { - info->priv = MATE_SETTINGS_PLUGIN_INFO_GET_PRIVATE (info); + info->priv = mate_settings_plugin_info_get_instance_private (info); } static void -- cgit v1.2.1