diff options
| author | Wu Xiaotian <[email protected]> | 2018-11-19 14:12:59 +0800 | 
|---|---|---|
| committer | raveit65 <[email protected]> | 2018-11-26 13:02:53 +0100 | 
| commit | 6b7875b9714d5872f80b6b4012f24fb8f548aca2 (patch) | |
| tree | bf3ba2f47a359ecad1281604cb869fbfe1200a05 | |
| parent | bdec713320b7487c429bd4415fdde55cf48cb44b (diff) | |
| download | mate-session-manager-6b7875b9714d5872f80b6b4012f24fb8f548aca2.tar.bz2 mate-session-manager-6b7875b9714d5872f80b6b4012f24fb8f548aca2.tar.xz | |
Avoid compile warning for g_type_class_add_private
- capplet/gsm-app-dialog.c
- capplet/gsm-app-dialog.h
- capplet/gsm-properties-dialog.c
- capplet/gsm-properties-dialog.h
- capplet/gsp-app-manager.c
- capplet/gsp-app-manager.h
- capplet/gsp-app.c
- capplet/gsp-app.h
- mate-session/gsm-app.c
- mate-session/gsm-app.h
- mate-session/gsm-autostart-app.c
- mate-session/gsm-autostart-app.h
- mate-session/gsm-client.c
- mate-session/gsm-client.h
- mate-session/gsm-consolekit.c
- mate-session/gsm-consolekit.h
- mate-session/gsm-dbus-client.c
- mate-session/gsm-dbus-client.h
- mate-session/gsm-inhibit-dialog.c
- mate-session/gsm-inhibit-dialog.h
- mate-session/gsm-inhibitor.c
- mate-session/gsm-inhibitor.h
- mate-session/gsm-logout-dialog.c
- mate-session/gsm-logout-dialog.h
- mate-session/gsm-store.c
- mate-session/gsm-store.h
- mate-session/gsm-systemd.c
- mate-session/gsm-systemd.h
- mate-session/gsm-xsmp-client.c
- mate-session/gsm-xsmp-client.h
- mate-session/gsm-xsmp-server.c
- mate-session/gsm-xsmp-server.h
32 files changed, 1486 insertions, 1513 deletions
| diff --git a/capplet/gsm-app-dialog.c b/capplet/gsm-app-dialog.c index 04aaf28..fbcfbef 100644 --- a/capplet/gsm-app-dialog.c +++ b/capplet/gsm-app-dialog.c @@ -35,16 +35,15 @@  #define CAPPLET_COMMENT_ENTRY_WIDGET_NAME "session_properties_comment_entry"  #define CAPPLET_BROWSE_WIDGET_NAME        "session_properties_browse_button" -#define GSM_APP_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_APP_DIALOG, GsmAppDialogPrivate)) -  #ifdef __GNUC__  #define UNUSED_VARIABLE __attribute__ ((unused))  #else  #define UNUSED_VARIABLE  #endif -struct GsmAppDialogPrivate +struct _GsmAppDialog  { +        GtkDialog  parent;          GtkWidget *name_entry;          GtkWidget *command_entry;          GtkWidget *comment_entry; @@ -56,7 +55,6 @@ struct GsmAppDialogPrivate  static void     gsm_app_dialog_class_init  (GsmAppDialogClass *klass);  static void     gsm_app_dialog_init        (GsmAppDialog      *app_dialog); -static void     gsm_app_dialog_finalize    (GObject           *object);  enum {          PROP_0, @@ -138,7 +136,7 @@ on_browse_button_clicked (GtkWidget    *widget,                  g_free (text); -                gtk_entry_set_text (GTK_ENTRY (dialog->priv->command_entry), uri); +                gtk_entry_set_text (GTK_ENTRY (dialog->command_entry), uri);                  g_free (uri);          } @@ -191,9 +189,9 @@ setup_dialog (GsmAppDialog *dialog)          gtk_dialog_add_button (GTK_DIALOG (dialog),                                 "gtk-cancel", GTK_RESPONSE_CANCEL); -        if (dialog->priv->name == NULL -            && dialog->priv->command == NULL -            && dialog->priv->comment == NULL) { +        if (dialog->name == NULL +            && dialog->command == NULL +            && dialog->comment == NULL) {                  gtk_window_set_title (GTK_WINDOW (dialog), _("Add Startup Program"));                  gtk_dialog_add_button (GTK_DIALOG (dialog),                                         "gtk-add", GTK_RESPONSE_OK); @@ -203,37 +201,37 @@ setup_dialog (GsmAppDialog *dialog)                                         "gtk-save", GTK_RESPONSE_OK);          } -        dialog->priv->name_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_NAME_ENTRY_WIDGET_NAME)); -        g_signal_connect (dialog->priv->name_entry, +        dialog->name_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_NAME_ENTRY_WIDGET_NAME)); +        g_signal_connect (dialog->name_entry,                            "activate",                            G_CALLBACK (on_entry_activate),                            dialog); -        if (dialog->priv->name != NULL) { -                gtk_entry_set_text (GTK_ENTRY (dialog->priv->name_entry), dialog->priv->name); +        if (dialog->name != NULL) { +                gtk_entry_set_text (GTK_ENTRY (dialog->name_entry), dialog->name);          } -        dialog->priv->browse_button = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_BROWSE_WIDGET_NAME)); -        g_signal_connect (dialog->priv->browse_button, +        dialog->browse_button = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_BROWSE_WIDGET_NAME)); +        g_signal_connect (dialog->browse_button,                            "clicked",                            G_CALLBACK (on_browse_button_clicked),                            dialog); -        dialog->priv->command_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_COMMAND_ENTRY_WIDGET_NAME)); -        g_signal_connect (dialog->priv->command_entry, +        dialog->command_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_COMMAND_ENTRY_WIDGET_NAME)); +        g_signal_connect (dialog->command_entry,                            "activate",                            G_CALLBACK (on_entry_activate),                            dialog); -        if (dialog->priv->command != NULL) { -                gtk_entry_set_text (GTK_ENTRY (dialog->priv->command_entry), dialog->priv->command); +        if (dialog->command != NULL) { +                gtk_entry_set_text (GTK_ENTRY (dialog->command_entry), dialog->command);          } -        dialog->priv->comment_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_COMMENT_ENTRY_WIDGET_NAME)); -        g_signal_connect (dialog->priv->comment_entry, +        dialog->comment_entry = GTK_WIDGET (gtk_builder_get_object (xml, CAPPLET_COMMENT_ENTRY_WIDGET_NAME)); +        g_signal_connect (dialog->comment_entry,                            "activate",                            G_CALLBACK (on_entry_activate),                            dialog); -        if (dialog->priv->comment != NULL) { -                gtk_entry_set_text (GTK_ENTRY (dialog->priv->comment_entry), dialog->priv->comment); +        if (dialog->comment != NULL) { +                gtk_entry_set_text (GTK_ENTRY (dialog->comment_entry), dialog->comment);          }          if (xml != NULL) { @@ -249,8 +247,8 @@ gsm_app_dialog_constructor (GType                  type,          GsmAppDialog *dialog;          dialog = GSM_APP_DIALOG (G_OBJECT_CLASS (gsm_app_dialog_parent_class)->constructor (type, -                                                                                                                  n_construct_app, -                                                                                                                  construct_app)); +                                                                                            n_construct_app, +                                                                                            construct_app));          setup_dialog (dialog); @@ -267,12 +265,12 @@ gsm_app_dialog_dispose (GObject *object)          dialog = GSM_APP_DIALOG (object); -        g_free (dialog->priv->name); -        dialog->priv->name = NULL; -        g_free (dialog->priv->command); -        dialog->priv->command = NULL; -        g_free (dialog->priv->comment); -        dialog->priv->comment = NULL; +        g_free (dialog->name); +        dialog->name = NULL; +        g_free (dialog->command); +        dialog->command = NULL; +        g_free (dialog->comment); +        dialog->comment = NULL;          G_OBJECT_CLASS (gsm_app_dialog_parent_class)->dispose (object);  } @@ -283,9 +281,9 @@ gsm_app_dialog_set_name (GsmAppDialog *dialog,  {          g_return_if_fail (GSM_IS_APP_DIALOG (dialog)); -        g_free (dialog->priv->name); +        g_free (dialog->name); -        dialog->priv->name = g_strdup (name); +        dialog->name = g_strdup (name);          g_object_notify (G_OBJECT (dialog), "name");  } @@ -295,9 +293,9 @@ gsm_app_dialog_set_command (GsmAppDialog *dialog,  {          g_return_if_fail (GSM_IS_APP_DIALOG (dialog)); -        g_free (dialog->priv->command); +        g_free (dialog->command); -        dialog->priv->command = g_strdup (name); +        dialog->command = g_strdup (name);          g_object_notify (G_OBJECT (dialog), "command");  } @@ -307,9 +305,9 @@ gsm_app_dialog_set_comment (GsmAppDialog *dialog,  {          g_return_if_fail (GSM_IS_APP_DIALOG (dialog)); -        g_free (dialog->priv->comment); +        g_free (dialog->comment); -        dialog->priv->comment = g_strdup (name); +        dialog->comment = g_strdup (name);          g_object_notify (G_OBJECT (dialog), "comment");  } @@ -317,21 +315,21 @@ const char *  gsm_app_dialog_get_name (GsmAppDialog *dialog)  {          g_return_val_if_fail (GSM_IS_APP_DIALOG (dialog), NULL); -        return gtk_entry_get_text (GTK_ENTRY (dialog->priv->name_entry)); +        return gtk_entry_get_text (GTK_ENTRY (dialog->name_entry));  }  const char *  gsm_app_dialog_get_command (GsmAppDialog *dialog)  {          g_return_val_if_fail (GSM_IS_APP_DIALOG (dialog), NULL); -        return gtk_entry_get_text (GTK_ENTRY (dialog->priv->command_entry)); +        return gtk_entry_get_text (GTK_ENTRY (dialog->command_entry));  }  const char *  gsm_app_dialog_get_comment (GsmAppDialog *dialog)  {          g_return_val_if_fail (GSM_IS_APP_DIALOG (dialog), NULL); -        return gtk_entry_get_text (GTK_ENTRY (dialog->priv->comment_entry)); +        return gtk_entry_get_text (GTK_ENTRY (dialog->comment_entry));  }  static void @@ -368,13 +366,13 @@ gsm_app_dialog_get_property (GObject        *object,          switch (prop_id) {          case PROP_NAME: -                g_value_set_string (value, dialog->priv->name); +                g_value_set_string (value, dialog->name);                  break;          case PROP_COMMAND: -                g_value_set_string (value, dialog->priv->command); +                g_value_set_string (value, dialog->command);                  break;          case PROP_COMMENT: -                g_value_set_string (value, dialog->priv->comment); +                g_value_set_string (value, dialog->comment);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -391,7 +389,6 @@ gsm_app_dialog_class_init (GsmAppDialogClass *klass)          object_class->set_property = gsm_app_dialog_set_property;          object_class->constructor = gsm_app_dialog_constructor;          object_class->dispose = gsm_app_dialog_dispose; -        object_class->finalize = gsm_app_dialog_finalize;          g_object_class_install_property (object_class,                                           PROP_NAME, @@ -414,30 +411,12 @@ gsm_app_dialog_class_init (GsmAppDialogClass *klass)                                                                "comment",                                                                NULL,                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - -        g_type_class_add_private (klass, sizeof (GsmAppDialogPrivate));  }  static void  gsm_app_dialog_init (GsmAppDialog *dialog)  { -        dialog->priv = GSM_APP_DIALOG_GET_PRIVATE (dialog); -} - -static void -gsm_app_dialog_finalize (GObject *object) -{ -        GsmAppDialog *dialog; - -        g_return_if_fail (object != NULL); -        g_return_if_fail (GSM_IS_APP_DIALOG (object)); - -        dialog = GSM_APP_DIALOG (object); - -        g_return_if_fail (dialog->priv != NULL); - -        G_OBJECT_CLASS (gsm_app_dialog_parent_class)->finalize (object);  }  GtkWidget * diff --git a/capplet/gsm-app-dialog.h b/capplet/gsm-app-dialog.h index 8fc5b52..5869242 100644 --- a/capplet/gsm-app-dialog.h +++ b/capplet/gsm-app-dialog.h @@ -24,31 +24,10 @@  #include <glib-object.h>  #include <gtk/gtk.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS -#define GSM_TYPE_APP_DIALOG         (gsm_app_dialog_get_type ()) -#define GSM_APP_DIALOG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_APP_DIALOG, GsmAppDialog)) -#define GSM_APP_DIALOG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_APP_DIALOG, GsmAppDialogClass)) -#define GSM_IS_APP_DIALOG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_APP_DIALOG)) -#define GSM_IS_APP_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_APP_DIALOG)) -#define GSM_APP_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_APP_DIALOG, GsmAppDialogClass)) - -typedef struct GsmAppDialogPrivate GsmAppDialogPrivate; - -typedef struct -{ -        GtkDialog            parent; -        GsmAppDialogPrivate *priv; -} GsmAppDialog; - -typedef struct -{ -        GtkDialogClass   parent_class; -} GsmAppDialogClass; - -GType                  gsm_app_dialog_get_type           (void); +#define GSM_TYPE_APP_DIALOG              (gsm_app_dialog_get_type ()) +G_DECLARE_FINAL_TYPE (GsmAppDialog, gsm_app_dialog, GSM, APP_DIALOG, GtkDialog)  GtkWidget            * gsm_app_dialog_new                (const char   *name,                                                            const char   *command, @@ -63,8 +42,6 @@ const char *           gsm_app_dialog_get_name           (GsmAppDialog *dialog);  const char *           gsm_app_dialog_get_command        (GsmAppDialog *dialog);  const char *           gsm_app_dialog_get_comment        (GsmAppDialog *dialog); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_APP_DIALOG_H */ diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c index 09042a6..e6463cd 100644 --- a/capplet/gsm-properties-dialog.c +++ b/capplet/gsm-properties-dialog.c @@ -35,8 +35,6 @@  #include "gsp-app.h"  #include "gsp-app-manager.h" -#define GSM_PROPERTIES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogPrivate)) -  #define GTKBUILDER_FILE "session-properties.ui"  #define CAPPLET_TREEVIEW_WIDGET_NAME      "session_properties_treeview" @@ -51,8 +49,9 @@  #define SPC_CONFIG_SCHEMA   "org.mate.session"  #define SPC_AUTOSAVE_KEY    "auto-save-session" -struct GsmPropertiesDialogPrivate +struct _GsmPropertiesDialog  { +        GtkDialog          parent;          GtkBuilder        *xml;          GtkListStore      *list_store;          GtkTreeModel      *tree_filter; @@ -167,12 +166,12 @@ _app_changed (GsmPropertiesDialog *dialog,  {          GtkTreeIter iter; -        if (!find_by_app (GTK_TREE_MODEL (dialog->priv->list_store), +        if (!find_by_app (GTK_TREE_MODEL (dialog->list_store),                            &iter, app)) {                  return;          } -        _fill_iter_from_app (dialog->priv->list_store, &iter, app); +        _fill_iter_from_app (dialog->list_store, &iter, app);  }  static void @@ -181,8 +180,8 @@ append_app (GsmPropertiesDialog *dialog,  {          GtkTreeIter   iter; -        gtk_list_store_append (dialog->priv->list_store, &iter); -        _fill_iter_from_app (dialog->priv->list_store, &iter, app); +        gtk_list_store_append (dialog->list_store, &iter); +        _fill_iter_from_app (dialog->list_store, &iter, app);          g_signal_connect_swapped (app, "changed",                                    G_CALLBACK (_app_changed), dialog); @@ -203,7 +202,7 @@ _app_removed (GsmPropertiesDialog *dialog,  {          GtkTreeIter iter; -        if (!find_by_app (GTK_TREE_MODEL (dialog->priv->list_store), +        if (!find_by_app (GTK_TREE_MODEL (dialog->list_store),                            &iter, app)) {                  return;          } @@ -211,7 +210,7 @@ _app_removed (GsmPropertiesDialog *dialog,          g_signal_handlers_disconnect_by_func (app,                                                _app_changed,                                                dialog); -        gtk_list_store_remove (dialog->priv->list_store, &iter); +        gtk_list_store_remove (dialog->list_store, &iter);  }  static void @@ -220,7 +219,7 @@ populate_model (GsmPropertiesDialog *dialog)          GSList *apps;          GSList *l; -        apps = gsp_app_manager_get_apps (dialog->priv->manager); +        apps = gsp_app_manager_get_apps (dialog->manager);          for (l = apps; l != NULL; l = l->next) {                  append_app (dialog, GSP_APP (l->data));          } @@ -235,8 +234,8 @@ on_selection_changed (GtkTreeSelection    *selection,          sel = gtk_tree_selection_get_selected (selection, NULL, NULL); -        gtk_widget_set_sensitive (dialog->priv->edit_button, sel); -        gtk_widget_set_sensitive (dialog->priv->delete_button, sel); +        gtk_widget_set_sensitive (dialog->edit_button, sel); +        gtk_widget_set_sensitive (dialog->delete_button, sel);  }  static void @@ -248,13 +247,13 @@ on_startup_enabled_toggled (GtkCellRendererToggle *cell_renderer,          GspApp     *app;          gboolean    active; -        if (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (dialog->priv->tree_filter), +        if (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (dialog->tree_filter),                                                    &iter, path)) {                  return;          }          app = NULL; -        gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->tree_filter), +        gtk_tree_model_get (GTK_TREE_MODEL (dialog->tree_filter),                              &iter,                              STORE_COL_APP, &app,                              -1); @@ -312,11 +311,11 @@ on_drag_begin (GtkWidget           *widget,          GspApp      *app;          gtk_tree_view_get_cursor (GTK_TREE_VIEW (widget), &path, NULL); -        gtk_tree_model_get_iter (GTK_TREE_MODEL (dialog->priv->tree_filter), +        gtk_tree_model_get_iter (GTK_TREE_MODEL (dialog->tree_filter),                                   &iter, path);          gtk_tree_path_free (path); -        gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->tree_filter), +        gtk_tree_model_get (GTK_TREE_MODEL (dialog->tree_filter),                              &iter,                              STORE_COL_APP, &app,                              -1); @@ -384,14 +383,14 @@ on_delete_app_clicked (GtkWidget           *widget,          GtkTreeIter       iter;          GspApp           *app; -        selection = gtk_tree_view_get_selection (dialog->priv->treeview); +        selection = gtk_tree_view_get_selection (dialog->treeview);          if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {                  return;          }          app = NULL; -        gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->tree_filter), +        gtk_tree_model_get (GTK_TREE_MODEL (dialog->tree_filter),                              &iter,                              STORE_COL_APP, &app,                              -1); @@ -410,14 +409,14 @@ on_edit_app_clicked (GtkWidget           *widget,          GtkTreeIter       iter;          GspApp           *app; -        selection = gtk_tree_view_get_selection (dialog->priv->treeview); +        selection = gtk_tree_view_get_selection (dialog->treeview);          if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {                  return;          }          app = NULL; -        gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->tree_filter), +        gtk_tree_model_get (GTK_TREE_MODEL (dialog->tree_filter),                              &iter,                              STORE_COL_APP, &app,                              -1); @@ -478,24 +477,24 @@ setup_dialog (GsmPropertiesDialog *dialog)                                  "gtk-close", GTK_RESPONSE_CLOSE,                                  NULL); -        dialog->priv->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS, -                                                       G_TYPE_BOOLEAN, -                                                       G_TYPE_BOOLEAN, -                                                       G_TYPE_ICON, -                                                       G_TYPE_STRING, -                                                       G_TYPE_OBJECT, -                                                       G_TYPE_STRING); -        tree_filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (dialog->priv->list_store), +        dialog->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS, +                                                 G_TYPE_BOOLEAN, +                                                 G_TYPE_BOOLEAN, +                                                 G_TYPE_ICON, +                                                 G_TYPE_STRING, +                                                 G_TYPE_OBJECT, +                                                 G_TYPE_STRING); +        tree_filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (dialog->list_store),                                                   NULL); -        g_object_unref (dialog->priv->list_store); -        dialog->priv->tree_filter = tree_filter; +        g_object_unref (dialog->list_store); +        dialog->tree_filter = tree_filter;          gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (tree_filter),                                                    STORE_COL_VISIBLE); -        treeview = GTK_TREE_VIEW (gtk_builder_get_object (dialog->priv->xml, +        treeview = GTK_TREE_VIEW (gtk_builder_get_object (dialog->xml,                                                            CAPPLET_TREEVIEW_WIDGET_NAME)); -        dialog->priv->treeview = treeview; +        dialog->treeview = treeview;          gtk_tree_view_set_model (treeview, tree_filter);          g_object_unref (tree_filter); @@ -590,56 +589,56 @@ setup_dialog (GsmPropertiesDialog *dialog)                            G_CALLBACK (on_drag_data_received),                            dialog); -        gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->priv->list_store), +        gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->list_store),                                                STORE_COL_DESCRIPTION,                                                GTK_SORT_ASCENDING); -        button = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       CAPPLET_ADD_WIDGET_NAME)); -        dialog->priv->add_button = button; +        dialog->add_button = button;          g_signal_connect (button,                            "clicked",                            G_CALLBACK (on_add_app_clicked),                            dialog); -        button = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       CAPPLET_DELETE_WIDGET_NAME)); -        dialog->priv->delete_button = button; +        dialog->delete_button = button;          g_signal_connect (button,                            "clicked",                            G_CALLBACK (on_delete_app_clicked),                            dialog); -        button = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       CAPPLET_EDIT_WIDGET_NAME)); -        dialog->priv->edit_button = button; +        dialog->edit_button = button;          g_signal_connect (button,                            "clicked",                            G_CALLBACK (on_edit_app_clicked),                            dialog); -        dialog->priv->settings = g_settings_new (SPC_CONFIG_SCHEMA); +        dialog->settings = g_settings_new (SPC_CONFIG_SCHEMA); -        button = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       CAPPLET_REMEMBER_WIDGET_NAME)); -        g_settings_bind (dialog->priv->settings, SPC_AUTOSAVE_KEY, +        g_settings_bind (dialog->settings, SPC_AUTOSAVE_KEY,                           button, "active", G_SETTINGS_BIND_DEFAULT); -        button = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       CAPPLET_SAVE_WIDGET_NAME));          g_signal_connect (button,                            "clicked",                            G_CALLBACK (on_save_session_clicked),                            dialog); -        dialog->priv->manager = gsp_app_manager_get (); -        gsp_app_manager_fill (dialog->priv->manager); -        g_signal_connect_swapped (dialog->priv->manager, "added", +        dialog->manager = gsp_app_manager_get (); +        gsp_app_manager_fill (dialog->manager); +        g_signal_connect_swapped (dialog->manager, "added",                                    G_CALLBACK (_app_added), dialog); -        g_signal_connect_swapped (dialog->priv->manager, "removed", +        g_signal_connect_swapped (dialog->manager, "removed",                                    G_CALLBACK (_app_removed), dialog);          populate_model (dialog); @@ -653,8 +652,8 @@ gsm_properties_dialog_constructor (GType                  type,          GsmPropertiesDialog *dialog;          dialog = GSM_PROPERTIES_DIALOG (G_OBJECT_CLASS (gsm_properties_dialog_parent_class)->constructor (type, -                                                                                                                  n_construct_properties, -                                                                                                                  construct_properties)); +                                                                                                          n_construct_properties, +                                                                                                          construct_properties));          setup_dialog (dialog); @@ -671,14 +670,14 @@ gsm_properties_dialog_dispose (GObject *object)          dialog = GSM_PROPERTIES_DIALOG (object); -        if (dialog->priv->xml != NULL) { -                g_object_unref (dialog->priv->xml); -                dialog->priv->xml = NULL; +        if (dialog->xml != NULL) { +                g_object_unref (dialog->xml); +                dialog->xml = NULL;          } -        if (dialog->priv->settings != NULL) { -                g_object_unref (dialog->priv->settings); -                dialog->priv->settings = NULL; +        if (dialog->settings != NULL) { +                g_object_unref (dialog->settings); +                dialog->settings = NULL;          }          G_OBJECT_CLASS (gsm_properties_dialog_parent_class)->dispose (object); @@ -686,9 +685,9 @@ gsm_properties_dialog_dispose (GObject *object)          /* it's important to do this after chaining to the parent dispose           * method because we want to make sure the treeview has been disposed           * and removed all its references to GspApp objects */ -        if (dialog->priv->manager != NULL) { -                g_object_unref (dialog->priv->manager); -                dialog->priv->manager = NULL; +        if (dialog->manager != NULL) { +                g_object_unref (dialog->manager); +                dialog->manager = NULL;          }  } @@ -700,8 +699,6 @@ gsm_properties_dialog_class_init (GsmPropertiesDialogClass *klass)          object_class->constructor = gsm_properties_dialog_constructor;          object_class->dispose = gsm_properties_dialog_dispose;          object_class->finalize = gsm_properties_dialog_finalize; - -        g_type_class_add_private (klass, sizeof (GsmPropertiesDialogPrivate));  }  static void @@ -711,13 +708,11 @@ gsm_properties_dialog_init (GsmPropertiesDialog *dialog)          GtkWidget   *widget;          GError      *error; -        dialog->priv = GSM_PROPERTIES_DIALOG_GET_PRIVATE (dialog); - -        dialog->priv->xml = gtk_builder_new (); -        gtk_builder_set_translation_domain (dialog->priv->xml, GETTEXT_PACKAGE); +        dialog->xml = gtk_builder_new (); +        gtk_builder_set_translation_domain (dialog->xml, GETTEXT_PACKAGE);          error = NULL; -        if (!gtk_builder_add_from_file (dialog->priv->xml, +        if (!gtk_builder_add_from_file (dialog->xml,                                          GTKBUILDER_DIR "/" GTKBUILDER_FILE,                                          &error)) {                  if (error) { @@ -730,7 +725,7 @@ gsm_properties_dialog_init (GsmPropertiesDialog *dialog)          }          content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); -        widget = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        widget = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       "main-notebook"));          gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0); @@ -744,15 +739,9 @@ gsm_properties_dialog_init (GsmPropertiesDialog *dialog)  static void  gsm_properties_dialog_finalize (GObject *object)  { -        GsmPropertiesDialog *dialog; -          g_return_if_fail (object != NULL);          g_return_if_fail (GSM_IS_PROPERTIES_DIALOG (object)); -        dialog = GSM_PROPERTIES_DIALOG (object); - -        g_return_if_fail (dialog->priv != NULL); -          G_OBJECT_CLASS (gsm_properties_dialog_parent_class)->finalize (object);  } diff --git a/capplet/gsm-properties-dialog.h b/capplet/gsm-properties-dialog.h index 0103581..93ef91b 100644 --- a/capplet/gsm-properties-dialog.h +++ b/capplet/gsm-properties-dialog.h @@ -24,38 +24,15 @@  #include <glib-object.h>  #include <gtk/gtk.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_PROPERTIES_DIALOG         (gsm_properties_dialog_get_type ()) -#define GSM_PROPERTIES_DIALOG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialog)) -#define GSM_PROPERTIES_DIALOG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogClass)) -#define GSM_IS_PROPERTIES_DIALOG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_PROPERTIES_DIALOG)) -#define GSM_IS_PROPERTIES_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_PROPERTIES_DIALOG)) -#define GSM_PROPERTIES_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogClass)) - -typedef struct GsmPropertiesDialogPrivate GsmPropertiesDialogPrivate; - -typedef struct -{ -        GtkDialog                   parent; -        GsmPropertiesDialogPrivate *priv; -} GsmPropertiesDialog; - -typedef struct -{ -        GtkDialogClass   parent_class; -} GsmPropertiesDialogClass; - -GType                  gsm_properties_dialog_get_type           (void); +G_DECLARE_FINAL_TYPE (GsmPropertiesDialog, gsm_properties_dialog, GSM, PROPERTIES_DIALOG, GtkDialog)  GtkWidget            * gsm_properties_dialog_new                (void);  #define GSM_PROPERTIES_ICON_SIZE GTK_ICON_SIZE_LARGE_TOOLBAR -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_PROPERTIES_DIALOG_H */ diff --git a/capplet/gsp-app-manager.c b/capplet/gsp-app-manager.c index be22c87..7e245db 100644 --- a/capplet/gsp-app-manager.c +++ b/capplet/gsp-app-manager.c @@ -36,13 +36,10 @@ typedef struct {          GFileMonitor *monitor;  } GspXdgDir; -struct _GspAppManagerPrivate { +typedef struct {          GSList *apps;          GSList *dirs; -}; - -#define GSP_APP_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSP_TYPE_APP_MANAGER, GspAppManagerPrivate)) - +} GspAppManagerPrivate;  enum {          ADDED, @@ -53,7 +50,7 @@ enum {  static guint gsp_app_manager_signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_TYPE (GspAppManager, gsp_app_manager, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (GspAppManager, gsp_app_manager, G_TYPE_OBJECT)  static void     gsp_app_manager_dispose      (GObject       *object);  static void     gsp_app_manager_finalize     (GObject       *object); @@ -124,33 +121,36 @@ gsp_app_manager_class_init (GspAppManagerClass *class)                                g_cclosure_marshal_VOID__OBJECT,                                G_TYPE_NONE, 1, G_TYPE_OBJECT); -        g_type_class_add_private (class, sizeof (GspAppManagerPrivate));  }  static void  gsp_app_manager_init (GspAppManager *manager)  { -        manager->priv = GSP_APP_MANAGER_GET_PRIVATE (manager); +        GspAppManagerPrivate *priv; +        priv = gsp_app_manager_get_instance_private (manager); -        memset (manager->priv, 0, sizeof (GspAppManagerPrivate)); +        // is needed? +        memset (priv, 0, sizeof (GspAppManagerPrivate));  }  static void  gsp_app_manager_dispose (GObject *object)  {          GspAppManager *manager; +        GspAppManagerPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSP_IS_APP_MANAGER (object));          manager = GSP_APP_MANAGER (object); +        priv = gsp_app_manager_get_instance_private (manager);          /* we unref GspApp objects in dispose since they might need to           * reference us during their dispose/finalize */ -        g_slist_foreach (manager->priv->apps, +        g_slist_foreach (priv->apps,                           (GFunc) _gsp_app_manager_app_unref, manager); -        g_slist_free (manager->priv->apps); -        manager->priv->apps = NULL; +        g_slist_free (priv->apps); +        priv->apps = NULL;          G_OBJECT_CLASS (gsp_app_manager_parent_class)->dispose (object);  } @@ -159,16 +159,18 @@ static void  gsp_app_manager_finalize (GObject *object)  {          GspAppManager *manager; +        GspAppManagerPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSP_IS_APP_MANAGER (object));          manager = GSP_APP_MANAGER (object); +        priv = gsp_app_manager_get_instance_private (manager); -        g_slist_foreach (manager->priv->dirs, +        g_slist_foreach (priv->dirs,                           (GFunc) _gsp_xdg_dir_free, NULL); -        g_slist_free (manager->priv->dirs); -        manager->priv->dirs = NULL; +        g_slist_free (priv->dirs); +        priv->dirs = NULL;          G_OBJECT_CLASS (gsp_app_manager_parent_class)->finalize (object); @@ -201,11 +203,14 @@ gsp_app_manager_get_dir_index (GspAppManager *manager,  {          GSList    *l;          GspXdgDir *xdgdir; +        GspAppManagerPrivate *priv;          g_return_val_if_fail (GSP_IS_APP_MANAGER (manager), -1);          g_return_val_if_fail (dir != NULL, -1); -        for (l = manager->priv->dirs; l != NULL; l = l->next) { +        priv = gsp_app_manager_get_instance_private (manager); + +        for (l = priv->dirs; l != NULL; l = l->next) {                  xdgdir = l->data;                  if (strcmp (dir, xdgdir->dir) == 0) {                          return xdgdir->index; @@ -221,10 +226,13 @@ gsp_app_manager_get_dir (GspAppManager *manager,  {          GSList    *l;          GspXdgDir *xdgdir; +        GspAppManagerPrivate *priv;          g_return_val_if_fail (GSP_IS_APP_MANAGER (manager), NULL); -        for (l = manager->priv->dirs; l != NULL; l = l->next) { +        priv = gsp_app_manager_get_instance_private (manager); + +        for (l = priv->dirs; l != NULL; l = l->next) {                  xdgdir = l->data;                  if (index == xdgdir->index) {                          return xdgdir->dir; @@ -244,11 +252,13 @@ _gsp_app_manager_find_dir_with_basename (GspAppManager *manager,          char      *path;          GKeyFile  *keyfile;          int        result = -1; +        GspAppManagerPrivate *priv;          path = NULL;          keyfile = g_key_file_new (); +        priv = gsp_app_manager_get_instance_private (manager); -        for (l = manager->priv->dirs; l != NULL; l = l->next) { +        for (l = priv->dirs; l != NULL; l = l->next) {                  xdgdir = l->data;                  if (xdgdir->index <= minimum_index) { @@ -485,8 +495,11 @@ gsp_app_manager_fill (GspAppManager *manager)  {          char **autostart_dirs;          int    i; +        GspAppManagerPrivate *priv; + +        priv = gsp_app_manager_get_instance_private (manager); -        if (manager->priv->apps != NULL) +        if (priv->apps != NULL)                  return;          autostart_dirs = gsm_util_get_autostart_dirs (); @@ -503,7 +516,7 @@ gsp_app_manager_fill (GspAppManager *manager)                  }                  xdgdir = _gsp_xdg_dir_new (autostart_dirs[i], i); -                manager->priv->dirs = g_slist_prepend (manager->priv->dirs, +                priv->dirs = g_slist_prepend (priv->dirs,                                                         xdgdir);                  _gsp_app_manager_fill_from_dir (manager, xdgdir); @@ -530,8 +543,11 @@ static void  _gsp_app_manager_app_removed (GspAppManager *manager,                                GspApp        *app)  { +        GspAppManagerPrivate *priv; +          _gsp_app_manager_emit_removed (manager, app); -        manager->priv->apps = g_slist_remove (manager->priv->apps, app); +        priv = gsp_app_manager_get_instance_private (manager); +        priv->apps = g_slist_remove (priv->apps, app);          _gsp_app_manager_app_unref (app, manager);  } @@ -539,11 +555,15 @@ void  gsp_app_manager_add (GspAppManager *manager,                       GspApp        *app)  { +        GspAppManagerPrivate *priv; +          g_return_if_fail (GSP_IS_APP_MANAGER (manager));          g_return_if_fail (GSP_IS_APP (app)); -        manager->priv->apps = g_slist_prepend (manager->priv->apps, -                                               g_object_ref (app)); +        priv = gsp_app_manager_get_instance_private (manager); + +        priv->apps = g_slist_prepend (priv->apps, +                                      g_object_ref (app));          g_signal_connect_swapped (app, "removed",                                    G_CALLBACK (_gsp_app_manager_app_removed),                                    manager); @@ -556,11 +576,14 @@ gsp_app_manager_find_app_with_basename (GspAppManager *manager,  {          GSList *l;          GspApp *app; +        GspAppManagerPrivate *priv;          g_return_val_if_fail (GSP_IS_APP_MANAGER (manager), NULL);          g_return_val_if_fail (basename != NULL, NULL); -        for (l = manager->priv->apps; l != NULL; l = l->next) { +        priv = gsp_app_manager_get_instance_private (manager); + +        for (l = priv->apps; l != NULL; l = l->next) {                  app = GSP_APP (l->data);                  if (strcmp (basename, gsp_app_get_basename (app)) == 0)                          return app; @@ -587,7 +610,11 @@ gsp_app_manager_get (void)  GSList *  gsp_app_manager_get_apps (GspAppManager *manager)  { +        GspAppManagerPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP_MANAGER (manager), NULL); -        return g_slist_copy (manager->priv->apps); +        priv = gsp_app_manager_get_instance_private (manager); + +        return g_slist_copy (priv->apps);  } diff --git a/capplet/gsp-app-manager.h b/capplet/gsp-app-manager.h index 11bf8a9..b3ceb1e 100644 --- a/capplet/gsp-app-manager.h +++ b/capplet/gsp-app-manager.h @@ -28,21 +28,10 @@  #include <gsp-app.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSP_TYPE_APP_MANAGER            (gsp_app_manager_get_type ()) -#define GSP_APP_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSP_TYPE_APP_MANAGER, GspAppManager)) -#define GSP_APP_MANAGER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSP_TYPE_APP_MANAGER, GspAppManagerClass)) -#define GSP_IS_APP_MANAGER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSP_TYPE_APP_MANAGER)) -#define GSP_IS_APP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSP_TYPE_APP_MANAGER)) -#define GSP_APP_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSP_TYPE_APP_MANAGER, GspAppManagerClass)) - -typedef struct _GspAppManager        GspAppManager; -typedef struct _GspAppManagerClass   GspAppManagerClass; - -typedef struct _GspAppManagerPrivate GspAppManagerPrivate; +G_DECLARE_DERIVABLE_TYPE (GspAppManager, gsp_app_manager, GSP, APP_MANAGER, GObject)  struct _GspAppManagerClass  { @@ -54,14 +43,7 @@ struct _GspAppManagerClass                            GspApp        *app);  }; -struct _GspAppManager -{ -        GObject parent_instance; - -        GspAppManagerPrivate *priv; -}; - -GType           gsp_app_manager_get_type               (void); +GType           gsp_app_manager_get_type               (void) G_GNUC_CONST;  GspAppManager  *gsp_app_manager_get                    (void); @@ -78,8 +60,6 @@ const char     *gsp_app_manager_get_dir                (GspAppManager *manager,  void            gsp_app_manager_add                    (GspAppManager *manager,                                                          GspApp        *app); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSP_APP_MANAGER_H */ diff --git a/capplet/gsp-app.c b/capplet/gsp-app.c index 4b299f5..02a91cc 100644 --- a/capplet/gsp-app.c +++ b/capplet/gsp-app.c @@ -48,7 +48,7 @@  #define GSP_ASP_SAVE_MASK_COMMENT  0x0010  #define GSP_ASP_SAVE_MASK_ALL      0xffff -struct _GspAppPrivate { +typedef struct {          char         *basename;          char         *path; @@ -77,10 +77,7 @@ struct _GspAppPrivate {          /* after writing to file, we skip the next file monitor event of type           * CHANGED */          gboolean      skip_next_monitor_event; -}; - -#define GSP_APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSP_TYPE_APP, GspAppPrivate)) - +} GspAppPrivate;  enum {          CHANGED, @@ -91,7 +88,7 @@ enum {  static guint gsp_app_signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_TYPE (GspApp, gsp_app, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (GspApp, gsp_app, G_TYPE_OBJECT)  static void     gsp_app_dispose  (GObject *object);  static void     gsp_app_finalize (GObject *object); @@ -148,60 +145,64 @@ gsp_app_class_init (GspAppClass *class)                                g_cclosure_marshal_VOID__VOID,                                G_TYPE_NONE, 0); -        g_type_class_add_private (class, sizeof (GspAppPrivate));  }  static void  gsp_app_init (GspApp *app)  { -        app->priv = GSP_APP_GET_PRIVATE (app); +        GspAppPrivate *priv; -        memset (app->priv, 0, sizeof (GspAppPrivate)); -        app->priv->xdg_position        = G_MAXUINT; -        app->priv->xdg_system_position = G_MAXUINT; +        priv = gsp_app_get_instance_private (app); + +        memset (priv, 0, sizeof (GspAppPrivate)); +        priv->xdg_position        = G_MAXUINT; +        priv->xdg_system_position = G_MAXUINT;  }  static void  _gsp_app_free_reusable_data (GspApp *app)  { -        if (app->priv->path) { -                g_free (app->priv->path); -                app->priv->path = NULL; +        GspAppPrivate *priv; + +        priv = gsp_app_get_instance_private (app); +        if (priv->path) { +                g_free (priv->path); +                priv->path = NULL;          } -        if (app->priv->name) { -                g_free (app->priv->name); -                app->priv->name = NULL; +        if (priv->name) { +                g_free (priv->name); +                priv->name = NULL;          } -        if (app->priv->exec) { -                g_free (app->priv->exec); -                app->priv->exec = NULL; +        if (priv->exec) { +                g_free (priv->exec); +                priv->exec = NULL;          } -        if (app->priv->comment) { -                g_free (app->priv->comment); -                app->priv->comment = NULL; +        if (priv->comment) { +                g_free (priv->comment); +                priv->comment = NULL;          } -        if (app->priv->icon) { -                g_free (app->priv->icon); -                app->priv->icon = NULL; +        if (priv->icon) { +                g_free (priv->icon); +                priv->icon = NULL;          } -        if (app->priv->gicon) { -                g_object_unref (app->priv->gicon); -                app->priv->gicon = NULL; +        if (priv->gicon) { +                g_object_unref (priv->gicon); +                priv->gicon = NULL;          } -        if (app->priv->description) { -                g_free (app->priv->description); -                app->priv->description = NULL; +        if (priv->description) { +                g_free (priv->description); +                priv->description = NULL;          } -        if (app->priv->old_system_path) { -                g_free (app->priv->old_system_path); -                app->priv->old_system_path = NULL; +        if (priv->old_system_path) { +                g_free (priv->old_system_path); +                priv->old_system_path = NULL;          }  } @@ -209,16 +210,18 @@ static void  gsp_app_dispose (GObject *object)  {          GspApp *app; +        GspAppPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSP_IS_APP (object));          app = GSP_APP (object); +        priv = gsp_app_get_instance_private (app);          /* we save in dispose since we might need to reference GspAppManager */ -        if (app->priv->save_timeout) { -                g_source_remove (app->priv->save_timeout); -                app->priv->save_timeout = 0; +        if (priv->save_timeout) { +                g_source_remove (priv->save_timeout); +                priv->save_timeout = 0;                  /* save now */                  _gsp_app_save (app); @@ -231,15 +234,17 @@ static void  gsp_app_finalize (GObject *object)  {          GspApp *app; +        GspAppPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSP_IS_APP (object));          app = GSP_APP (object); +        priv = gsp_app_get_instance_private (app); -        if (app->priv->basename) { -                g_free (app->priv->basename); -                app->priv->basename = NULL; +        if (priv->basename) { +                g_free (priv->basename); +                priv->basename = NULL;          }          _gsp_app_free_reusable_data (app); @@ -264,25 +269,28 @@ _gsp_app_update_description (GspApp *app)  {          const char *primary;          const char *secondary; +        GspAppPrivate *priv; -        if (!gsm_util_text_is_blank (app->priv->name)) { -                primary = app->priv->name; -        } else if (!gsm_util_text_is_blank (app->priv->exec)) { -                primary = app->priv->exec; +        priv = gsp_app_get_instance_private (app); + +        if (!gsm_util_text_is_blank (priv->name)) { +                primary = priv->name; +        } else if (!gsm_util_text_is_blank (priv->exec)) { +                primary = priv->exec;          } else {                  primary = _("No name");          } -        if (!gsm_util_text_is_blank (app->priv->comment)) { -                secondary = app->priv->comment; +        if (!gsm_util_text_is_blank (priv->comment)) { +                secondary = priv->comment;          } else {                  secondary = _("No description");          } -        g_free (app->priv->description); -        app->priv->description = g_markup_printf_escaped ("<b>%s</b>\n%s", -                                                          primary, -                                                          secondary); +        g_free (priv->description); +        priv->description = g_markup_printf_escaped ("<b>%s</b>\n%s", +                                                     primary, +                                                     secondary);  }  /* @@ -305,20 +313,22 @@ _gsp_app_user_equal_system (GspApp  *app,                              char   **system_path)  {          GspAppManager *manager; +        GspAppPrivate *priv;          const char    *system_dir;          char          *path;          char          *str;          GKeyFile      *keyfile;          manager = gsp_app_manager_get (); +        priv = gsp_app_get_instance_private (app);          system_dir = gsp_app_manager_get_dir (manager, -                                              app->priv->xdg_system_position); +                                              priv->xdg_system_position);          g_object_unref (manager);          if (!system_dir) {                  return FALSE;          } -        path = g_build_filename (system_dir, app->priv->basename, NULL); +        path = g_build_filename (system_dir, priv->basename, NULL);          keyfile = g_key_file_new ();          if (!g_key_file_load_from_file (keyfile, path, G_KEY_FILE_NONE, NULL)) { @@ -329,10 +339,10 @@ _gsp_app_user_equal_system (GspApp  *app,          if (gsp_key_file_get_boolean (keyfile,                                        G_KEY_FILE_DESKTOP_KEY_HIDDEN, -                                      FALSE) != app->priv->hidden || +                                      FALSE) != priv->hidden ||              gsp_key_file_get_boolean (keyfile,                                        GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, -                                      TRUE) != app->priv->enabled) { +                                      TRUE) != priv->enabled) {                  g_free (path);                  g_key_file_free (keyfile);                  return FALSE; @@ -340,7 +350,7 @@ _gsp_app_user_equal_system (GspApp  *app,          str = gsp_key_file_get_locale_string (keyfile,                                                G_KEY_FILE_DESKTOP_KEY_NAME); -        if (!_gsp_str_equal (str, app->priv->name)) { +        if (!_gsp_str_equal (str, priv->name)) {                  g_free (str);                  g_free (path);                  g_key_file_free (keyfile); @@ -350,7 +360,7 @@ _gsp_app_user_equal_system (GspApp  *app,          str = gsp_key_file_get_locale_string (keyfile,                                                G_KEY_FILE_DESKTOP_KEY_COMMENT); -        if (!_gsp_str_equal (str, app->priv->comment)) { +        if (!_gsp_str_equal (str, priv->comment)) {                  g_free (str);                  g_free (path);                  g_key_file_free (keyfile); @@ -360,7 +370,7 @@ _gsp_app_user_equal_system (GspApp  *app,          str = gsp_key_file_get_string (keyfile,                                         G_KEY_FILE_DESKTOP_KEY_EXEC); -        if (!_gsp_str_equal (str, app->priv->exec)) { +        if (!_gsp_str_equal (str, priv->exec)) {                  g_free (str);                  g_free (path);                  g_key_file_free (keyfile); @@ -370,7 +380,7 @@ _gsp_app_user_equal_system (GspApp  *app,          str = gsp_key_file_get_locale_string (keyfile,                                                G_KEY_FILE_DESKTOP_KEY_ICON); -        if (!_gsp_str_equal (str, app->priv->icon)) { +        if (!_gsp_str_equal (str, priv->icon)) {                  g_free (str);                  g_free (path);                  g_key_file_free (keyfile); @@ -388,11 +398,14 @@ _gsp_app_user_equal_system (GspApp  *app,  static inline void  _gsp_app_save_done_success (GspApp *app)  { -        app->priv->save_mask = 0; +        GspAppPrivate *priv; + +        priv = gsp_app_get_instance_private (app); +        priv->save_mask = 0; -        if (app->priv->old_system_path) { -                g_free (app->priv->old_system_path); -                app->priv->old_system_path = NULL; +        if (priv->old_system_path) { +                g_free (priv->old_system_path); +                priv->old_system_path = NULL;          }  } @@ -403,30 +416,32 @@ _gsp_app_save (gpointer data)          char     *use_path;          GKeyFile *keyfile;          GError   *error; +        GspAppPrivate *priv;          app = GSP_APP (data); +        priv = gsp_app_get_instance_private (app);          /* first check if removing the data from the user dir and using the           * data from the system dir is enough -- this helps us keep clean the           * user config dir by removing unneeded files */          if (_gsp_app_user_equal_system (app, &use_path)) { -                if (g_file_test (app->priv->path, G_FILE_TEST_EXISTS)) { -                        g_remove (app->priv->path); +                if (g_file_test (priv->path, G_FILE_TEST_EXISTS)) { +                        g_remove (priv->path);                  } -                g_free (app->priv->path); -                app->priv->path = use_path; +                g_free (priv->path); +                priv->path = use_path; -                app->priv->xdg_position = app->priv->xdg_system_position; +                priv->xdg_position = priv->xdg_system_position;                  _gsp_app_save_done_success (app);                  return FALSE;          } -        if (app->priv->old_system_path) -                use_path = app->priv->old_system_path; +        if (priv->old_system_path) +                use_path = priv->old_system_path;          else -                use_path = app->priv->path; +                use_path = priv->path;          keyfile = g_key_file_new (); @@ -440,80 +455,83 @@ _gsp_app_save (gpointer data)                  gsp_key_file_populate (keyfile);          } -        if (app->priv->save_mask & GSP_ASP_SAVE_MASK_HIDDEN) { +        if (priv->save_mask & GSP_ASP_SAVE_MASK_HIDDEN) {                  gsp_key_file_set_boolean (keyfile,                                            G_KEY_FILE_DESKTOP_KEY_HIDDEN, -                                          app->priv->hidden); +                                          priv->hidden);          } -        if (app->priv->save_mask & GSP_ASP_SAVE_MASK_ENABLED) { +        if (priv->save_mask & GSP_ASP_SAVE_MASK_ENABLED) {                  gsp_key_file_set_boolean (keyfile,                                            GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, -                                          app->priv->enabled); +                                          priv->enabled);          } -        if (app->priv->save_mask & GSP_ASP_SAVE_MASK_NAME) { +        if (priv->save_mask & GSP_ASP_SAVE_MASK_NAME) {                  gsp_key_file_set_locale_string (keyfile,                                                  G_KEY_FILE_DESKTOP_KEY_NAME, -                                                app->priv->name); +                                                priv->name);                  gsp_key_file_ensure_C_key (keyfile, G_KEY_FILE_DESKTOP_KEY_NAME);          } -        if (app->priv->save_mask & GSP_ASP_SAVE_MASK_COMMENT) { +        if (priv->save_mask & GSP_ASP_SAVE_MASK_COMMENT) {                  gsp_key_file_set_locale_string (keyfile,                                                  G_KEY_FILE_DESKTOP_KEY_COMMENT, -                                                app->priv->comment); +                                                priv->comment);                  gsp_key_file_ensure_C_key (keyfile, G_KEY_FILE_DESKTOP_KEY_COMMENT);          } -        if (app->priv->save_mask & GSP_ASP_SAVE_MASK_EXEC) { +        if (priv->save_mask & GSP_ASP_SAVE_MASK_EXEC) {                  gsp_key_file_set_string (keyfile,                                           G_KEY_FILE_DESKTOP_KEY_EXEC, -                                         app->priv->exec); +                                         priv->exec);          }          _gsp_ensure_user_autostart_dir (); -        if (gsp_key_file_to_file (keyfile, app->priv->path, NULL)) { -                app->priv->skip_next_monitor_event = TRUE; +        if (gsp_key_file_to_file (keyfile, priv->path, NULL)) { +                priv->skip_next_monitor_event = TRUE;                  _gsp_app_save_done_success (app);          } else { -                g_warning ("Could not save %s file", app->priv->path); +                g_warning ("Could not save %s file", priv->path);          }          g_key_file_free (keyfile); -        app->priv->save_timeout = 0; +        priv->save_timeout = 0;          return FALSE;  }  static void  _gsp_app_queue_save (GspApp *app)  { -        if (app->priv->save_timeout) { -                g_source_remove (app->priv->save_timeout); -                app->priv->save_timeout = 0; +        GspAppPrivate *priv; + +        priv = gsp_app_get_instance_private (app); +        if (priv->save_timeout) { +                g_source_remove (priv->save_timeout); +                priv->save_timeout = 0;          }          /* if the file was not in the user directory, then we'll create a copy           * there */ -        if (app->priv->xdg_position != 0) { -                app->priv->xdg_position = 0; +        if (priv->xdg_position != 0) { +                priv->xdg_position = 0; -                if (app->priv->old_system_path == NULL) { -                        app->priv->old_system_path = app->priv->path; +                if (priv->old_system_path == NULL) { +                        priv->old_system_path = priv->path;                          /* if old_system_path was not NULL, then it means we                           * tried to save and we failed; in that case, we want                           * to try again and use the old file as a basis again */                  } -                app->priv->path = g_build_filename (g_get_user_config_dir (), -                                                    "autostart", -                                                    app->priv->basename, NULL); +                priv->path = g_build_filename (g_get_user_config_dir (), +                                               "autostart", +                                               priv->basename, NULL);          } -        app->priv->save_timeout = g_timeout_add_seconds (GSP_APP_SAVE_DELAY, -                                                         _gsp_app_save, -                                                         app); +        priv->save_timeout = g_timeout_add_seconds (GSP_APP_SAVE_DELAY, +                                                    _gsp_app_save, +                                                    app);  }  /* @@ -523,47 +541,67 @@ _gsp_app_queue_save (GspApp *app)  const char *  gsp_app_get_basename (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->basename; +        priv = gsp_app_get_instance_private (app); + +        return priv->basename;  }  const char *  gsp_app_get_path (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->path; +        priv = gsp_app_get_instance_private (app); + +        return priv->path;  }  gboolean  gsp_app_get_hidden (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), FALSE); -        return app->priv->hidden; +        priv = gsp_app_get_instance_private (app); + +        return priv->hidden;  }  gboolean  gsp_app_get_enabled (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), FALSE); -        return app->priv->enabled; +        priv = gsp_app_get_instance_private (app); + +        return priv->enabled;  }  void  gsp_app_set_enabled (GspApp   *app,                       gboolean  enabled)  { +        GspAppPrivate *priv; +          g_return_if_fail (GSP_IS_APP (app)); -        if (enabled == app->priv->enabled) { +        priv = gsp_app_get_instance_private (app); + +        if (enabled == priv->enabled) {                  return;          } -        app->priv->enabled = enabled; -        app->priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED; +        priv->enabled = enabled; +        priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED;          _gsp_app_queue_save (app);          _gsp_app_emit_changed (app); @@ -572,34 +610,50 @@ gsp_app_set_enabled (GspApp   *app,  const char *  gsp_app_get_name (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->name; +        priv = gsp_app_get_instance_private (app); + +        return priv->name;  }  const char *  gsp_app_get_exec (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->exec; +        priv = gsp_app_get_instance_private (app); + +        return priv->exec;  }  const char *  gsp_app_get_comment (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->comment; +        priv = gsp_app_get_instance_private (app); + +        return priv->comment;  }  GIcon *  gsp_app_get_icon (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        if (app->priv->gicon) { -                return g_object_ref (app->priv->gicon); +        priv = gsp_app_get_instance_private (app); + +        if (priv->gicon) { +                return g_object_ref (priv->gicon);          } else {                  return NULL;          } @@ -608,34 +662,50 @@ gsp_app_get_icon (GspApp *app)  unsigned int  gsp_app_get_xdg_position (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), G_MAXUINT); -        return app->priv->xdg_position; +        priv = gsp_app_get_instance_private (app); + +        return priv->xdg_position;  }  unsigned int  gsp_app_get_xdg_system_position (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), G_MAXUINT); -        return app->priv->xdg_system_position; +        priv = gsp_app_get_instance_private (app); + +        return priv->xdg_system_position;  }  void  gsp_app_set_xdg_system_position (GspApp       *app,                                   unsigned int  position)  { +        GspAppPrivate *priv; +          g_return_if_fail (GSP_IS_APP (app)); -        app->priv->xdg_system_position = position; +        priv = gsp_app_get_instance_private (app); + +        priv->xdg_system_position = position;  }  const char *  gsp_app_get_description (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_val_if_fail (GSP_IS_APP (app), NULL); -        return app->priv->description; +        priv = gsp_app_get_instance_private (app); + +        return priv->description;  }  /* @@ -649,34 +719,36 @@ gsp_app_update (GspApp     *app,                  const char *exec)  {          gboolean    changed; +        GspAppPrivate *priv;          g_return_if_fail (GSP_IS_APP (app));          changed = FALSE; +        priv = gsp_app_get_instance_private (app); -        if (!_gsp_str_equal (name, app->priv->name)) { +        if (!_gsp_str_equal (name, priv->name)) {                  changed = TRUE; -                g_free (app->priv->name); -                app->priv->name = g_strdup (name); -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_NAME; +                g_free (priv->name); +                priv->name = g_strdup (name); +                priv->save_mask |= GSP_ASP_SAVE_MASK_NAME;          } -        if (!_gsp_str_equal (comment, app->priv->comment)) { +        if (!_gsp_str_equal (comment, priv->comment)) {                  changed = TRUE; -                g_free (app->priv->comment); -                app->priv->comment = g_strdup (comment); -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_COMMENT; +                g_free (priv->comment); +                priv->comment = g_strdup (comment); +                priv->save_mask |= GSP_ASP_SAVE_MASK_COMMENT;          }          if (changed) {                  _gsp_app_update_description (app);          } -        if (!_gsp_str_equal (exec, app->priv->exec)) { +        if (!_gsp_str_equal (exec, priv->exec)) {                  changed = TRUE; -                g_free (app->priv->exec); -                app->priv->exec = g_strdup (exec); -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_EXEC; +                g_free (priv->exec); +                priv->exec = g_strdup (exec); +                priv->save_mask |= GSP_ASP_SAVE_MASK_EXEC;          }          if (changed) { @@ -688,30 +760,33 @@ gsp_app_update (GspApp     *app,  void  gsp_app_delete (GspApp *app)  { +        GspAppPrivate *priv; +          g_return_if_fail (GSP_IS_APP (app)); -        if (app->priv->xdg_position == 0 && -            app->priv->xdg_system_position == G_MAXUINT) { +        priv = gsp_app_get_instance_private (app); +        if (priv->xdg_position == 0 && +            priv->xdg_system_position == G_MAXUINT) {                  /* exists in user directory only */ -                if (app->priv->save_timeout) { -                        g_source_remove (app->priv->save_timeout); -                        app->priv->save_timeout = 0; +                if (priv->save_timeout) { +                        g_source_remove (priv->save_timeout); +                        priv->save_timeout = 0;                  } -                if (g_file_test (app->priv->path, G_FILE_TEST_EXISTS)) { -                        g_remove (app->priv->path); +                if (g_file_test (priv->path, G_FILE_TEST_EXISTS)) { +                        g_remove (priv->path);                  }                  /* for extra safety */ -                app->priv->hidden = TRUE; -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN; +                priv->hidden = TRUE; +                priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;                  _gsp_app_emit_removed (app);          } else {                  /* also exists in system directory, so we have to keep a file                   * in the user directory */ -                app->priv->hidden = TRUE; -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN; +                priv->hidden = TRUE; +                priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;                  _gsp_app_queue_save (app);                  _gsp_app_emit_changed (app); @@ -727,9 +802,13 @@ gsp_app_reload_at (GspApp       *app,                     const char   *path,                     unsigned int  xdg_position)  { +        GspAppPrivate *priv; +          g_return_if_fail (GSP_IS_APP (app)); -        app->priv->xdg_position = G_MAXUINT; +        priv = gsp_app_get_instance_private (app); + +        priv->xdg_position = G_MAXUINT;          gsp_app_new (path, xdg_position);  } @@ -778,34 +857,36 @@ gsp_app_new (const char   *path,          GKeyFile      *keyfile;          char          *basename;          gboolean       new; +        GspAppPrivate *priv;          basename = g_path_get_basename (path);          manager = gsp_app_manager_get ();          app = gsp_app_manager_find_app_with_basename (manager, basename); +        priv = gsp_app_get_instance_private (app);          g_object_unref (manager);          new = (app == NULL);          if (!new) { -                if (app->priv->xdg_position == xdg_position) { -                        if (app->priv->skip_next_monitor_event) { -                                app->priv->skip_next_monitor_event = FALSE; +                if (priv->xdg_position == xdg_position) { +                        if (priv->skip_next_monitor_event) { +                                priv->skip_next_monitor_event = FALSE;                                  return NULL;                          }                          /* else: the file got changed but not by us, we'll                           * update our data from disk */                  } -                if (app->priv->xdg_position < xdg_position || -                    app->priv->save_timeout != 0) { +                if (priv->xdg_position < xdg_position || +                    priv->save_timeout != 0) {                          /* we don't really care about this file, since we                           * already have something with a higher priority, or                           * we're going to write something in the user config                           * anyway.                           * Note: xdg_position >= 1 so it's a system dir */ -                        app->priv->xdg_system_position = MIN (xdg_position, -                                                              app->priv->xdg_system_position); +                        priv->xdg_system_position = MIN (xdg_position, +                                                              priv->xdg_system_position);                          return NULL;                  }          } @@ -825,49 +906,50 @@ gsp_app_new (const char   *path,          if (new) {                  app = g_object_new (GSP_TYPE_APP, NULL); -                app->priv->basename = basename; +                priv = gsp_app_get_instance_private (app); +                priv->basename = basename;          } else {                  g_free (basename);                  _gsp_app_free_reusable_data (app);          } -        app->priv->path = g_strdup (path); +        priv->path = g_strdup (path); -        app->priv->hidden = gsp_key_file_get_boolean (keyfile, -                                                      G_KEY_FILE_DESKTOP_KEY_HIDDEN, -                                                      FALSE); -        app->priv->enabled = gsp_key_file_get_boolean (keyfile, -                                                       GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, -                                                       TRUE); +        priv->hidden = gsp_key_file_get_boolean (keyfile, +                                                 G_KEY_FILE_DESKTOP_KEY_HIDDEN, +                                                 FALSE); +        priv->enabled = gsp_key_file_get_boolean (keyfile, +                                                  GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, +                                                  TRUE); -        app->priv->name = gsp_key_file_get_locale_string (keyfile, -                                                          G_KEY_FILE_DESKTOP_KEY_NAME); -        app->priv->exec = gsp_key_file_get_string (keyfile, -                                                   G_KEY_FILE_DESKTOP_KEY_EXEC); -        app->priv->comment = gsp_key_file_get_locale_string (keyfile, -                                                             G_KEY_FILE_DESKTOP_KEY_COMMENT); +        priv->name = gsp_key_file_get_locale_string (keyfile, +                                                     G_KEY_FILE_DESKTOP_KEY_NAME); +        priv->exec = gsp_key_file_get_string (keyfile, +                                              G_KEY_FILE_DESKTOP_KEY_EXEC); +        priv->comment = gsp_key_file_get_locale_string (keyfile, +                                                        G_KEY_FILE_DESKTOP_KEY_COMMENT); -        if (gsm_util_text_is_blank (app->priv->name)) { -                g_free (app->priv->name); -                app->priv->name = g_strdup (app->priv->exec); +        if (gsm_util_text_is_blank (priv->name)) { +                g_free (priv->name); +                priv->name = g_strdup (priv->exec);          } -        app->priv->icon = gsp_key_file_get_locale_string (keyfile, -                                                          G_KEY_FILE_DESKTOP_KEY_ICON); +        priv->icon = gsp_key_file_get_locale_string (keyfile, +                                                     G_KEY_FILE_DESKTOP_KEY_ICON); -        if (app->priv->icon) { +        if (priv->icon) {                  /* look at icon and see if it's a themed icon or not */ -                if (g_path_is_absolute (app->priv->icon)) { +                if (g_path_is_absolute (priv->icon)) {                          GFile *iconfile; -                        iconfile = g_file_new_for_path (app->priv->icon); -                        app->priv->gicon = g_file_icon_new (iconfile); +                        iconfile = g_file_new_for_path (priv->icon); +                        priv->gicon = g_file_icon_new (iconfile);                          g_object_unref (iconfile);                  } else { -                        app->priv->gicon = g_themed_icon_new (app->priv->icon); +                        priv->gicon = g_themed_icon_new (priv->icon);                  }          } else { -                app->priv->gicon = NULL; +                priv->gicon = NULL;          }          g_key_file_free (keyfile); @@ -875,16 +957,16 @@ gsp_app_new (const char   *path,          _gsp_app_update_description (app);          if (xdg_position > 0) { -                g_assert (xdg_position <= app->priv->xdg_system_position); -                app->priv->xdg_system_position = xdg_position; +                g_assert (xdg_position <= priv->xdg_system_position); +                priv->xdg_system_position = xdg_position;          }          /* else we keep the old value (which is G_MAXUINT if it wasn't set) */ -        app->priv->xdg_position = xdg_position; +        priv->xdg_position = xdg_position; -        g_assert (!new || app->priv->save_timeout == 0); -        app->priv->save_timeout = 0; -        app->priv->old_system_path = NULL; -        app->priv->skip_next_monitor_event = FALSE; +        g_assert (!new || priv->save_timeout == 0); +        priv->save_timeout = 0; +        priv->old_system_path = NULL; +        priv->skip_next_monitor_event = FALSE;          if (!new) {                  _gsp_app_emit_changed (app); @@ -956,6 +1038,7 @@ gsp_app_create (const char *name,                  const char *exec)  {          GspAppManager  *manager; +        GspAppPrivate *priv;          GspApp         *app;          char           *basename;          char          **argv; @@ -974,35 +1057,36 @@ gsp_app_create (const char *name,          }          app = g_object_new (GSP_TYPE_APP, NULL); +        priv = gsp_app_get_instance_private (app); -        app->priv->basename = basename; -        app->priv->path = g_build_filename (g_get_user_config_dir (), -                                            "autostart", -                                            app->priv->basename, NULL); +        priv->basename = basename; +        priv->path = g_build_filename (g_get_user_config_dir (), +                                       "autostart", +                                       priv->basename, NULL); -        app->priv->hidden = FALSE; -        app->priv->enabled = TRUE; +        priv->hidden = FALSE; +        priv->enabled = TRUE;          if (!gsm_util_text_is_blank (name)) { -                app->priv->name = g_strdup (name); +                priv->name = g_strdup (name);          } else { -                app->priv->name = g_strdup (exec); +                priv->name = g_strdup (exec);          } -        app->priv->exec = g_strdup (exec); -        app->priv->comment = g_strdup (comment); -        app->priv->icon = NULL; +        priv->exec = g_strdup (exec); +        priv->comment = g_strdup (comment); +        priv->icon = NULL; -        app->priv->gicon = NULL; +        priv->gicon = NULL;          _gsp_app_update_description (app);          /* by definition */ -        app->priv->xdg_position = 0; -        app->priv->xdg_system_position = G_MAXUINT; +        priv->xdg_position = 0; +        priv->xdg_system_position = G_MAXUINT; -        app->priv->save_timeout = 0; -        app->priv->save_mask |= GSP_ASP_SAVE_MASK_ALL; -        app->priv->old_system_path = NULL; -        app->priv->skip_next_monitor_event = FALSE; +        priv->save_timeout = 0; +        priv->save_mask |= GSP_ASP_SAVE_MASK_ALL; +        priv->old_system_path = NULL; +        priv->skip_next_monitor_event = FALSE;          _gsp_app_queue_save (app); @@ -1016,6 +1100,7 @@ gboolean  gsp_app_copy_desktop_file (const char *uri)  {          GspAppManager *manager; +        GspAppPrivate *priv;          GspApp        *app;          GFile         *src_file;          char          *src_basename; @@ -1062,6 +1147,7 @@ gsp_app_copy_desktop_file (const char *uri)          g_object_unref (dst_file);          app = gsp_app_new (dst_path, 0); +        priv = gsp_app_get_instance_private (app);          if (!app) {                  g_remove (dst_path);                  g_free (dst_path); @@ -1071,16 +1157,16 @@ gsp_app_copy_desktop_file (const char *uri)          g_free (dst_path);          changed = FALSE; -        if (app->priv->hidden) { +        if (priv->hidden) {                  changed = TRUE; -                app->priv->hidden = FALSE; -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN; +                priv->hidden = FALSE; +                priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;          } -        if (!app->priv->enabled) { +        if (!priv->enabled) {                  changed = TRUE; -                app->priv->enabled = TRUE; -                app->priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED; +                priv->enabled = TRUE; +                priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED;          }          if (changed) { diff --git a/capplet/gsp-app.h b/capplet/gsp-app.h index b72db13..3525d9f 100644 --- a/capplet/gsp-app.h +++ b/capplet/gsp-app.h @@ -27,21 +27,10 @@  #include <glib-object.h>  #include <gio/gio.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSP_TYPE_APP            (gsp_app_get_type ()) -#define GSP_APP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSP_TYPE_APP, GspApp)) -#define GSP_APP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSP_TYPE_APP, GspAppClass)) -#define GSP_IS_APP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSP_TYPE_APP)) -#define GSP_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSP_TYPE_APP)) -#define GSP_APP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSP_TYPE_APP, GspAppClass)) - -typedef struct _GspApp        GspApp; -typedef struct _GspAppClass   GspAppClass; - -typedef struct _GspAppPrivate GspAppPrivate; +G_DECLARE_DERIVABLE_TYPE (GspApp, gsp_app, GSP, APP, GObject)  struct _GspAppClass  { @@ -51,14 +40,7 @@ struct _GspAppClass          void (* removed) (GspApp *app);  }; -struct _GspApp -{ -        GObject parent_instance; - -        GspAppPrivate *priv; -}; - -GType            gsp_app_get_type          (void); +GType            gsp_app_get_type          (void) G_GNUC_CONST;  void             gsp_app_create            (const char   *name,                                              const char   *comment, @@ -102,8 +84,6 @@ unsigned int     gsp_app_get_xdg_system_position  (GspApp       *app);  void             gsp_app_set_xdg_system_position  (GspApp       *app,                                                     unsigned int  position); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSP_APP_H */ diff --git a/mate-session/gsm-app.c b/mate-session/gsm-app.c index 55c2911..7d693b8 100644 --- a/mate-session/gsm-app.c +++ b/mate-session/gsm-app.c @@ -29,17 +29,13 @@  #include "gsm-app.h"  #include "gsm-app-glue.h" -#define GSM_APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_APP, GsmAppPrivate)) - -struct _GsmAppPrivate -{ +typedef struct {          char            *id;          char            *app_id;          int              phase;          char            *startup_id;          DBusGConnection *connection; -}; - +} GsmAppPrivate;  enum {          EXITED, @@ -60,7 +56,7 @@ enum {          LAST_PROP  }; -G_DEFINE_TYPE (GsmApp, gsm_app, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (GsmApp, gsm_app, G_TYPE_OBJECT)  GQuark  gsm_app_error_quark (void) @@ -92,10 +88,13 @@ static gboolean  register_app (GsmApp *app)  {          GError *error; +        GsmAppPrivate *priv;          error = NULL; -        app->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -        if (app->priv->connection == NULL) { +        priv = gsm_app_get_instance_private (app); + +        priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); +        if (priv->connection == NULL) {                  if (error != NULL) {                          g_critical ("error getting session bus: %s", error->message);                          g_error_free (error); @@ -103,7 +102,7 @@ register_app (GsmApp *app)                  return FALSE;          } -        dbus_g_connection_register_g_object (app->priv->connection, app->priv->id, G_OBJECT (app)); +        dbus_g_connection_register_g_object (priv->connection, priv->id, G_OBJECT (app));          return TRUE;  } @@ -115,13 +114,15 @@ gsm_app_constructor (GType                  type,  {          GsmApp    *app;          gboolean   res; +        GsmAppPrivate *priv;          app = GSM_APP (G_OBJECT_CLASS (gsm_app_parent_class)->constructor (type,                                                                             n_construct_properties,                                                                             construct_properties)); +        priv = gsm_app_get_instance_private (app); -        g_free (app->priv->id); -        app->priv->id = g_strdup_printf ("/org/gnome/SessionManager/App%u", get_next_app_serial ()); +        g_free (priv->id); +        priv->id = g_strdup_printf ("/org/gnome/SessionManager/App%u", get_next_app_serial ());          res = register_app (app);          if (! res) { @@ -134,27 +135,32 @@ gsm_app_constructor (GType                  type,  static void  gsm_app_init (GsmApp *app)  { -        app->priv = GSM_APP_GET_PRIVATE (app);  }  static void  gsm_app_set_phase (GsmApp *app,                     int     phase)  { +        GsmAppPrivate *priv;          g_return_if_fail (GSM_IS_APP (app)); -        app->priv->phase = phase; +        priv = gsm_app_get_instance_private (app); + +        priv->phase = phase;  }  static void  gsm_app_set_id (GsmApp     *app,                  const char *id)  { +        GsmAppPrivate *priv;          g_return_if_fail (GSM_IS_APP (app)); -        g_free (app->priv->id); +        priv = gsm_app_get_instance_private (app); + +        g_free (priv->id); -        app->priv->id = g_strdup (id); +        priv->id = g_strdup (id);          g_object_notify (G_OBJECT (app), "id");  } @@ -162,11 +168,14 @@ static void  gsm_app_set_startup_id (GsmApp     *app,                          const char *startup_id)  { +        GsmAppPrivate *priv;          g_return_if_fail (GSM_IS_APP (app)); -        g_free (app->priv->startup_id); +        priv = gsm_app_get_instance_private (app); -        app->priv->startup_id = g_strdup (startup_id); +        g_free (priv->startup_id); + +        priv->startup_id = g_strdup (startup_id);          g_object_notify (G_OBJECT (app), "startup-id");  } @@ -200,17 +209,20 @@ gsm_app_get_property (GObject    *object,                        GValue     *value,                        GParamSpec *pspec)  { +        GsmAppPrivate *priv;          GsmApp *app = GSM_APP (object); +        priv = gsm_app_get_instance_private (app); +          switch (prop_id) {          case PROP_STARTUP_ID: -                g_value_set_string (value, app->priv->startup_id); +                g_value_set_string (value, priv->startup_id);                  break;          case PROP_ID: -                g_value_set_string (value, app->priv->id); +                g_value_set_string (value, priv->id);                  break;          case PROP_PHASE: -                g_value_set_int (value, app->priv->phase); +                g_value_set_int (value, priv->phase);                  break;          default:                  break; @@ -220,13 +232,16 @@ gsm_app_get_property (GObject    *object,  static void  gsm_app_dispose (GObject *object)  { +        GsmAppPrivate *priv;          GsmApp *app = GSM_APP (object); -        g_free (app->priv->startup_id); -        app->priv->startup_id = NULL; +        priv = gsm_app_get_instance_private (app); -        g_free (app->priv->id); -        app->priv->id = NULL; +        g_free (priv->startup_id); +        priv->startup_id = NULL; + +        g_free (priv->id); +        priv->id = NULL;          G_OBJECT_CLASS (gsm_app_parent_class)->dispose (object);  } @@ -301,14 +316,16 @@ gsm_app_class_init (GsmAppClass *klass)                                G_TYPE_NONE,                                0); -        g_type_class_add_private (klass, sizeof (GsmAppPrivate));          dbus_g_object_type_install_info (GSM_TYPE_APP, &dbus_glib_gsm_app_object_info);  }  const char *  gsm_app_peek_id (GsmApp *app)  { -        return app->priv->id; +        GsmAppPrivate *priv; +        priv = gsm_app_get_instance_private (app); + +        return priv->id;  }  const char * @@ -320,7 +337,10 @@ gsm_app_peek_app_id (GsmApp *app)  const char *  gsm_app_peek_startup_id (GsmApp *app)  { -        return app->priv->startup_id; +        GsmAppPrivate *priv; + +        priv = gsm_app_get_instance_private (app); +        return priv->startup_id;  }  /** @@ -334,9 +354,12 @@ gsm_app_peek_startup_id (GsmApp *app)  GsmManagerPhase  gsm_app_peek_phase (GsmApp *app)  { +        GsmAppPrivate *priv;          g_return_val_if_fail (GSM_IS_APP (app), GSM_MANAGER_PHASE_APPLICATION); -        return app->priv->phase; +        priv = gsm_app_get_instance_private (app); + +        return priv->phase;  }  gboolean @@ -414,7 +437,10 @@ gboolean  gsm_app_start (GsmApp  *app,                 GError **error)  { -        g_debug ("Starting app: %s", app->priv->id); +        GsmAppPrivate *priv; + +        priv = gsm_app_get_instance_private (app); +        g_debug ("Starting app: %s", priv->id);          return GSM_APP_GET_CLASS (app)->impl_start (app, error);  } @@ -423,7 +449,11 @@ gboolean  gsm_app_restart (GsmApp  *app,                   GError **error)  { -        g_debug ("Re-starting app: %s", app->priv->id); +        GsmAppPrivate *priv; + +        priv = gsm_app_get_instance_private (app); + +        g_debug ("Re-starting app: %s", priv->id);          return GSM_APP_GET_CLASS (app)->impl_restart (app, error);  } @@ -486,8 +516,11 @@ gsm_app_get_startup_id (GsmApp     *app,                          char      **id,                          GError    **error)  { +        GsmAppPrivate *priv;          g_return_val_if_fail (GSM_IS_APP (app), FALSE); -        *id = g_strdup (app->priv->startup_id); + +        priv = gsm_app_get_instance_private (app); +        *id = g_strdup (priv->startup_id);          return TRUE;  } @@ -496,7 +529,10 @@ gsm_app_get_phase (GsmApp     *app,                     guint      *phase,                     GError    **error)  { +        GsmAppPrivate *priv;          g_return_val_if_fail (GSM_IS_APP (app), FALSE); -        *phase = app->priv->phase; + +        priv = gsm_app_get_instance_private (app); +        *phase = priv->phase;          return TRUE;  } diff --git a/mate-session/gsm-app.h b/mate-session/gsm-app.h index a1adaa3..a535fc5 100644 --- a/mate-session/gsm-app.h +++ b/mate-session/gsm-app.h @@ -30,26 +30,10 @@  #include "gsm-manager.h"  #include "gsm-client.h" -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_APP            (gsm_app_get_type ()) -#define GSM_APP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_APP, GsmApp)) -#define GSM_APP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_APP, GsmAppClass)) -#define GSM_IS_APP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_APP)) -#define GSM_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_APP)) -#define GSM_APP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_APP, GsmAppClass)) - -typedef struct _GsmApp        GsmApp; -typedef struct _GsmAppClass   GsmAppClass; -typedef struct _GsmAppPrivate GsmAppPrivate; - -struct _GsmApp -{ -        GObject        parent; -        GsmAppPrivate *priv; -}; +G_DECLARE_DERIVABLE_TYPE (GsmApp, gsm_app, GSM, APP, GObject)  struct _GsmAppClass  { @@ -131,8 +115,6 @@ gboolean         gsm_app_get_phase                      (GsmApp     *app,                                                           guint      *phase,                                                           GError    **error); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_APP_H__ */ diff --git a/mate-session/gsm-autostart-app.c b/mate-session/gsm-autostart-app.c index 11ac4f4..aac072c 100644 --- a/mate-session/gsm-autostart-app.c +++ b/mate-session/gsm-autostart-app.c @@ -56,7 +56,7 @@ enum {  #define GSM_SESSION_CLIENT_DBUS_INTERFACE "org.mate.SessionClient" -struct _GsmAutostartAppPrivate { +typedef struct {          char                 *desktop_filename;          char                 *desktop_id;          char                 *startup_id; @@ -78,7 +78,7 @@ struct _GsmAutostartAppPrivate {          DBusGProxy           *proxy;          DBusGProxyCall       *proxy_call; -}; +} GsmAutostartAppPrivate;  enum {          CONDITION_CHANGED, @@ -92,19 +92,19 @@ enum {  static guint signals[LAST_SIGNAL] = { 0 }; -#define GSM_AUTOSTART_APP_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSM_TYPE_AUTOSTART_APP, GsmAutostartAppPrivate)) - -G_DEFINE_TYPE (GsmAutostartApp, gsm_autostart_app, GSM_TYPE_APP) +G_DEFINE_TYPE_WITH_PRIVATE (GsmAutostartApp, gsm_autostart_app, GSM_TYPE_APP)  static void  gsm_autostart_app_init (GsmAutostartApp *app)  { -        app->priv = GSM_AUTOSTART_APP_GET_PRIVATE (app); +        GsmAutostartAppPrivate *priv; -        app->priv->pid = -1; -        app->priv->condition_monitor = NULL; -        app->priv->condition = FALSE; -        app->priv->autostart_delay = -1; +        priv = gsm_autostart_app_get_instance_private (app); + +        priv->pid = -1; +        priv->condition_monitor = NULL; +        priv->condition = FALSE; +        priv->autostart_delay = -1;  }  static gboolean @@ -112,7 +112,7 @@ is_disabled (GsmApp *app)  {          GsmAutostartAppPrivate *priv; -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          /* GSM_AUTOSTART_APP_ENABLED_KEY key, used by old mate-session */          if (egg_desktop_file_has_key (priv->desktop_file, @@ -196,7 +196,7 @@ if_exists_condition_cb (GFileMonitor     *monitor,          GsmAutostartAppPrivate *priv;          gboolean                condition = FALSE; -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          switch (event) {          case G_FILE_MONITOR_EVENT_CREATED: @@ -227,7 +227,7 @@ unless_exists_condition_cb (GFileMonitor     *monitor,          GsmAutostartAppPrivate *priv;          gboolean                condition = FALSE; -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          switch (event) {          case G_FILE_MONITOR_EVENT_CREATED: @@ -261,7 +261,7 @@ gsettings_condition_cb (GSettings  *settings,          app = GSM_APP (user_data); -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          condition = g_settings_get_boolean (settings, key); @@ -286,9 +286,12 @@ setup_gsettings_condition_monitor (GsmAutostartApp *app,          char **elems;          gboolean retval = FALSE;          char *signal; +        GsmAutostartAppPrivate *priv;          elems = g_strsplit (key, " ", 2); +        priv = gsm_autostart_app_get_instance_private (app); +          if (elems == NULL)                  goto out; @@ -312,7 +315,7 @@ setup_gsettings_condition_monitor (GsmAutostartApp *app,          retval = g_settings_get_boolean (settings, elems[1]); -        app->priv->condition_settings = settings; +        priv->condition_settings = settings;  out:          g_strfreev (elems); @@ -327,17 +330,20 @@ setup_condition_monitor (GsmAutostartApp *app)          char    *key;          gboolean res;          gboolean UNUSED_VARIABLE disabled; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app); -        if (app->priv->condition_monitor != NULL) { -                g_file_monitor_cancel (app->priv->condition_monitor); +        if (priv->condition_monitor != NULL) { +                g_file_monitor_cancel (priv->condition_monitor);          } -        if (app->priv->condition_settings != NULL) { -                g_object_unref (app->priv->condition_settings); -                app->priv->condition_settings = NULL; +        if (priv->condition_settings != NULL) { +                g_object_unref (priv->condition_settings); +                priv->condition_settings = NULL;          } -        if (app->priv->condition_string == NULL) { +        if (priv->condition_string == NULL) {                  return;          } @@ -347,7 +353,7 @@ setup_condition_monitor (GsmAutostartApp *app)          }          key = NULL; -        res = parse_condition_string (app->priv->condition_string, &kind, &key); +        res = parse_condition_string (priv->condition_string, &kind, &key);          if (! res) {                  g_free (key);                  return; @@ -366,9 +372,9 @@ setup_condition_monitor (GsmAutostartApp *app)                  disabled = !g_file_test (file_path, G_FILE_TEST_EXISTS);                  file = g_file_new_for_path (file_path); -                app->priv->condition_monitor = g_file_monitor_file (file, 0, NULL, NULL); +                priv->condition_monitor = g_file_monitor_file (file, 0, NULL, NULL); -                g_signal_connect (app->priv->condition_monitor, "changed", +                g_signal_connect (priv->condition_monitor, "changed",                                    G_CALLBACK (if_exists_condition_cb),                                    app); @@ -383,9 +389,9 @@ setup_condition_monitor (GsmAutostartApp *app)                  disabled = g_file_test (file_path, G_FILE_TEST_EXISTS);                  file = g_file_new_for_path (file_path); -                app->priv->condition_monitor = g_file_monitor_file (file, 0, NULL, NULL); +                priv->condition_monitor = g_file_monitor_file (file, 0, NULL, NULL); -                g_signal_connect (app->priv->condition_monitor, "changed", +                g_signal_connect (priv->condition_monitor, "changed",                                    G_CALLBACK (unless_exists_condition_cb),                                    app); @@ -412,12 +418,15 @@ load_desktop_file (GsmAutostartApp *app)          char    *phase_str;          int      phase;          gboolean res; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app); -        if (app->priv->desktop_file == NULL) { +        if (priv->desktop_file == NULL) {                  return FALSE;          } -        phase_str = egg_desktop_file_get_string (app->priv->desktop_file, +        phase_str = egg_desktop_file_get_string (priv->desktop_file,                                                   GSM_AUTOSTART_APP_PHASE_KEY,                                                   NULL);          if (phase_str != NULL) { @@ -438,20 +447,20 @@ load_desktop_file (GsmAutostartApp *app)                  phase = GSM_MANAGER_PHASE_APPLICATION;          } -        dbus_name = egg_desktop_file_get_string (app->priv->desktop_file, +        dbus_name = egg_desktop_file_get_string (priv->desktop_file,                                                   GSM_AUTOSTART_APP_DBUS_NAME_KEY,                                                   NULL);          if (dbus_name != NULL) { -                app->priv->launch_type = AUTOSTART_LAUNCH_ACTIVATE; +                priv->launch_type = AUTOSTART_LAUNCH_ACTIVATE;          } else { -                app->priv->launch_type = AUTOSTART_LAUNCH_SPAWN; +                priv->launch_type = AUTOSTART_LAUNCH_SPAWN;          }          /* this must only be done on first load */ -        switch (app->priv->launch_type) { +        switch (priv->launch_type) {          case AUTOSTART_LAUNCH_SPAWN:                  startup_id = -                        egg_desktop_file_get_string (app->priv->desktop_file, +                        egg_desktop_file_get_string (priv->desktop_file,                                                       GSM_AUTOSTART_APP_STARTUP_ID_KEY,                                                       NULL); @@ -466,32 +475,32 @@ load_desktop_file (GsmAutostartApp *app)                  g_assert_not_reached ();          } -        res = egg_desktop_file_has_key (app->priv->desktop_file, +        res = egg_desktop_file_has_key (priv->desktop_file,                                          GSM_AUTOSTART_APP_AUTORESTART_KEY,                                          NULL);          if (res) { -                app->priv->autorestart = egg_desktop_file_get_boolean (app->priv->desktop_file, -                                                                       GSM_AUTOSTART_APP_AUTORESTART_KEY, -                                                                       NULL); +                priv->autorestart = egg_desktop_file_get_boolean (priv->desktop_file, +                                                                  GSM_AUTOSTART_APP_AUTORESTART_KEY, +                                                                  NULL);          } else { -                app->priv->autorestart = FALSE; +                priv->autorestart = FALSE;          } -        g_free (app->priv->condition_string); -        app->priv->condition_string = egg_desktop_file_get_string (app->priv->desktop_file, -                                                                   "AutostartCondition", -                                                                   NULL); +        g_free (priv->condition_string); +        priv->condition_string = egg_desktop_file_get_string (priv->desktop_file, +                                                              "AutostartCondition", +                                                              NULL);          setup_condition_monitor (app);          if (phase == GSM_MANAGER_PHASE_APPLICATION) {                  /* Only accept an autostart delay for the application phase */ -                app->priv->autostart_delay = egg_desktop_file_get_integer (app->priv->desktop_file, -                                                                           GSM_AUTOSTART_APP_DELAY_KEY, -                                                                           NULL); -                if (app->priv->autostart_delay < 0) { -                        g_warning ("Invalid autostart delay of %d for %s", app->priv->autostart_delay, +                priv->autostart_delay = egg_desktop_file_get_integer (priv->desktop_file, +                                                                      GSM_AUTOSTART_APP_DELAY_KEY, +                                                                      NULL); +                if (priv->autostart_delay < 0) { +                        g_warning ("Invalid autostart delay of %d for %s", priv->autostart_delay,                                     gsm_app_peek_id (GSM_APP (app))); -                        app->priv->autostart_delay = -1; +                        priv->autostart_delay = -1;                  }          } @@ -511,22 +520,25 @@ gsm_autostart_app_set_desktop_filename (GsmAutostartApp *app,                                          const char      *desktop_filename)  {          GError *error; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app); -        if (app->priv->desktop_file != NULL) { -                egg_desktop_file_free (app->priv->desktop_file); -                app->priv->desktop_file = NULL; -                g_free (app->priv->desktop_id); +        if (priv->desktop_file != NULL) { +                egg_desktop_file_free (priv->desktop_file); +                priv->desktop_file = NULL; +                g_free (priv->desktop_id);          }          if (desktop_filename == NULL) {                  return;          } -        app->priv->desktop_id = g_path_get_basename (desktop_filename); +        priv->desktop_id = g_path_get_basename (desktop_filename);          error = NULL; -        app->priv->desktop_file = egg_desktop_file_new (desktop_filename, &error); -        if (app->priv->desktop_file == NULL) { +        priv->desktop_file = egg_desktop_file_new (desktop_filename, &error); +        if (priv->desktop_file == NULL) {                  g_warning ("Could not parse desktop file %s: %s",                             desktop_filename,                             error->message); @@ -562,13 +574,15 @@ gsm_autostart_app_get_property (GObject    *object,                                  GParamSpec *pspec)  {          GsmAutostartApp *self; +        GsmAutostartAppPrivate *priv;          self = GSM_AUTOSTART_APP (object); +        priv = gsm_autostart_app_get_instance_private (self);          switch (prop_id) {          case PROP_DESKTOP_FILENAME: -                if (self->priv->desktop_file != NULL) { -                        g_value_set_string (value, egg_desktop_file_get_source (self->priv->desktop_file)); +                if (priv->desktop_file != NULL) { +                        g_value_set_string (value, egg_desktop_file_get_source (priv->desktop_file));                  } else {                          g_value_set_string (value, NULL);                  } @@ -584,7 +598,7 @@ gsm_autostart_app_dispose (GObject *object)  {          GsmAutostartAppPrivate *priv; -        priv = GSM_AUTOSTART_APP (object)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(object));          if (priv->startup_id) {                  g_free (priv->startup_id); @@ -639,7 +653,7 @@ is_running (GsmApp *app)          GsmAutostartAppPrivate *priv;          gboolean                is; -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          /* is running if pid is still valid or           * or a client is connected @@ -653,13 +667,13 @@ is_running (GsmApp *app)  static gboolean  is_conditionally_disabled (GsmApp *app)  { -        GsmAutostartAppPrivate *priv;          gboolean                res;          gboolean                disabled;          char                   *key;          guint                   kind; +        GsmAutostartAppPrivate *priv; -        priv = GSM_AUTOSTART_APP (app)->priv; +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app));          /* Check AutostartCondition */          if (priv->condition_string == NULL) { @@ -716,6 +730,9 @@ app_exited (GPid             pid,              int              status,              GsmAutostartApp *app)  { +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app);          g_debug ("GsmAutostartApp: (pid:%d) done (%s:%d)",                   (int) pid,                   WIFEXITED (status) ? "status" @@ -725,9 +742,9 @@ app_exited (GPid             pid,                   : WIFSIGNALED (status) ? WTERMSIG (status)                   : -1); -        g_spawn_close_pid (app->priv->pid); -        app->priv->pid = -1; -        app->priv->child_watch_id = 0; +        g_spawn_close_pid (priv->pid); +        priv->pid = -1; +        priv->child_watch_id = 0;          if (WIFEXITED (status)) {                  gsm_app_exited (GSM_APP (app)); @@ -768,8 +785,11 @@ autostart_app_stop_spawn (GsmAutostartApp *app,                            GError         **error)  {          int res; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app); -        if (app->priv->pid < 1) { +        if (priv->pid < 1) {                  g_set_error (error,                               GSM_APP_ERROR,                               GSM_APP_ERROR_STOP, @@ -777,7 +797,7 @@ autostart_app_stop_spawn (GsmAutostartApp *app,                  return FALSE;          } -        res = _signal_pid (app->priv->pid, SIGTERM); +        res = _signal_pid (priv->pid, SIGTERM);          if (res != 0) {                  g_set_error (error,                               GSM_APP_ERROR, @@ -803,12 +823,14 @@ gsm_autostart_app_stop (GsmApp  *app,  {          GsmAutostartApp *aapp;          gboolean         ret; +        GsmAutostartAppPrivate *priv;          aapp = GSM_AUTOSTART_APP (app); -        g_return_val_if_fail (aapp->priv->desktop_file != NULL, FALSE); +        priv = gsm_autostart_app_get_instance_private (aapp); +        g_return_val_if_fail (priv->desktop_file != NULL, FALSE); -        switch (aapp->priv->launch_type) { +        switch (priv->launch_type) {          case AUTOSTART_LAUNCH_SPAWN:                  ret = autostart_app_stop_spawn (aapp, error);                  break; @@ -832,43 +854,45 @@ autostart_app_start_spawn (GsmAutostartApp *app,          GError          *local_error;          const char      *startup_id;          char            *command; +        GsmAutostartAppPrivate *priv;          startup_id = gsm_app_peek_startup_id (GSM_APP (app));          g_assert (startup_id != NULL); +        priv = gsm_autostart_app_get_instance_private (app);          env[0] = g_strdup_printf ("DESKTOP_AUTOSTART_ID=%s", startup_id);          local_error = NULL; -        command = egg_desktop_file_parse_exec (app->priv->desktop_file, +        command = egg_desktop_file_parse_exec (priv->desktop_file,                                                 NULL,                                                 &local_error);          if (command == NULL) {                  g_warning ("Unable to parse command from  '%s': %s", -                           egg_desktop_file_get_source (app->priv->desktop_file), +                           egg_desktop_file_get_source (priv->desktop_file),                             local_error->message);                  g_error_free (local_error);          } -        g_debug ("GsmAutostartApp: starting %s: command=%s startup-id=%s", app->priv->desktop_id, command, startup_id); +        g_debug ("GsmAutostartApp: starting %s: command=%s startup-id=%s", priv->desktop_id, command, startup_id);          g_free (command); -        g_free (app->priv->startup_id); +        g_free (priv->startup_id);          local_error = NULL; -        success = egg_desktop_file_launch (app->priv->desktop_file, +        success = egg_desktop_file_launch (priv->desktop_file,                                             NULL,                                             &local_error,                                             EGG_DESKTOP_FILE_LAUNCH_PUTENV, env,                                             EGG_DESKTOP_FILE_LAUNCH_FLAGS, G_SPAWN_DO_NOT_REAP_CHILD, -                                           EGG_DESKTOP_FILE_LAUNCH_RETURN_PID, &app->priv->pid, -                                           EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID, &app->priv->startup_id, +                                           EGG_DESKTOP_FILE_LAUNCH_RETURN_PID, &priv->pid, +                                           EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID, &priv->startup_id,                                             NULL);          g_free (env[0]);          if (success) { -                g_debug ("GsmAutostartApp: started pid:%d", app->priv->pid); -                app->priv->child_watch_id = g_child_watch_add (app->priv->pid, -                                                               (GChildWatchFunc)app_exited, -                                                               app); +                g_debug ("GsmAutostartApp: started pid:%d", priv->pid); +                priv->child_watch_id = g_child_watch_add (priv->pid, +                                                          (GChildWatchFunc)app_exited, +                                                          app);          } else {                  g_set_error (error,                               GSM_APP_ERROR, @@ -887,19 +911,22 @@ start_notify (DBusGProxy      *proxy,  {          gboolean res;          GError  *error; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app);          error = NULL;          res = dbus_g_proxy_end_call (proxy,                                       call,                                       &error,                                       G_TYPE_INVALID); -        app->priv->proxy_call = NULL; +        priv->proxy_call = NULL;          if (! res) {                  g_warning ("GsmAutostartApp: Error starting application: %s", error->message);                  g_error_free (error);          } else { -                g_debug ("GsmAutostartApp: Started application %s", app->priv->desktop_id); +                g_debug ("GsmAutostartApp: Started application %s", priv->desktop_id);          }  } @@ -912,6 +939,9 @@ autostart_app_start_activate (GsmAutostartApp  *app,          char            *arguments;          DBusGConnection *bus;          GError          *local_error; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (app);          local_error = NULL;          bus = dbus_g_bus_get (DBUS_BUS_SESSION, &local_error); @@ -926,7 +956,7 @@ autostart_app_start_activate (GsmAutostartApp  *app,          name = gsm_app_peek_startup_id (GSM_APP (app));          g_assert (name != NULL); -        path = egg_desktop_file_get_string (app->priv->desktop_file, +        path = egg_desktop_file_get_string (priv->desktop_file,                                              GSM_AUTOSTART_APP_DBUS_PATH_KEY,                                              NULL);          if (path == NULL) { @@ -934,15 +964,15 @@ autostart_app_start_activate (GsmAutostartApp  *app,                  path = g_strdup ("/");          } -        arguments = egg_desktop_file_get_string (app->priv->desktop_file, +        arguments = egg_desktop_file_get_string (priv->desktop_file,                                                   GSM_AUTOSTART_APP_DBUS_ARGS_KEY,                                                   NULL); -        app->priv->proxy = dbus_g_proxy_new_for_name (bus, -                                                      name, -                                                      path, -                                                      GSM_SESSION_CLIENT_DBUS_INTERFACE); -        if (app->priv->proxy == NULL) { +        priv->proxy = dbus_g_proxy_new_for_name (bus, +                                                 name, +                                                 path, +                                                 GSM_SESSION_CLIENT_DBUS_INTERFACE); +        if (priv->proxy == NULL) {                  g_set_error (error,                               GSM_APP_ERROR,                               GSM_APP_ERROR_START, @@ -950,16 +980,16 @@ autostart_app_start_activate (GsmAutostartApp  *app,                  return FALSE;          } -        app->priv->proxy_call = dbus_g_proxy_begin_call (app->priv->proxy, -                                                         "Start", -                                                         (DBusGProxyCallNotify)start_notify, -                                                         app, -                                                         NULL, -                                                         G_TYPE_STRING, arguments, -                                                         G_TYPE_INVALID); -        if (app->priv->proxy_call == NULL) { -                g_object_unref (app->priv->proxy); -                app->priv->proxy = NULL; +        priv->proxy_call = dbus_g_proxy_begin_call (priv->proxy, +                                                    "Start", +                                                    (DBusGProxyCallNotify)start_notify, +                                                    app, +                                                    NULL, +                                                    G_TYPE_STRING, arguments, +                                                    G_TYPE_INVALID); +        if (priv->proxy_call == NULL) { +                g_object_unref (priv->proxy); +                priv->proxy = NULL;                  g_set_error (error,                               GSM_APP_ERROR,                               GSM_APP_ERROR_START, @@ -976,12 +1006,14 @@ gsm_autostart_app_start (GsmApp  *app,  {          GsmAutostartApp *aapp;          gboolean         ret; +        GsmAutostartAppPrivate *priv;          aapp = GSM_AUTOSTART_APP (app); +        priv = gsm_autostart_app_get_instance_private (aapp); -        g_return_val_if_fail (aapp->priv->desktop_file != NULL, FALSE); +        g_return_val_if_fail (priv->desktop_file != NULL, FALSE); -        switch (aapp->priv->launch_type) { +        switch (priv->launch_type) {          case AUTOSTART_LAUNCH_SPAWN:                  ret = autostart_app_start_spawn (aapp, error);                  break; @@ -1028,16 +1060,19 @@ gsm_autostart_app_provides (GsmApp     *app,          gsize            len;          gsize            i;          GsmAutostartApp *aapp; +        GsmAutostartAppPrivate *priv; +          g_return_val_if_fail (GSM_IS_APP (app), FALSE);          aapp = GSM_AUTOSTART_APP (app); +        priv = gsm_autostart_app_get_instance_private (aapp); -        if (aapp->priv->desktop_file == NULL) { +        if (priv->desktop_file == NULL) {                  return FALSE;          } -        provides = egg_desktop_file_get_string_list (aapp->priv->desktop_file, +        provides = egg_desktop_file_get_string_list (priv->desktop_file,                                                       GSM_AUTOSTART_APP_PROVIDES_KEY,                                                       &len, NULL);          if (!provides) { @@ -1060,17 +1095,19 @@ gsm_autostart_app_has_autostart_condition (GsmApp     *app,                                             const char *condition)  {          GsmAutostartApp *aapp; +        GsmAutostartAppPrivate *priv;          g_return_val_if_fail (GSM_IS_APP (app), FALSE);          g_return_val_if_fail (condition != NULL, FALSE);          aapp = GSM_AUTOSTART_APP (app); +        priv = gsm_autostart_app_get_instance_private (aapp); -        if (aapp->priv->condition_string == NULL) { +        if (priv->condition_string == NULL) {                  return FALSE;          } -        if (strcmp (aapp->priv->condition_string, condition) == 0) { +        if (strcmp (priv->condition_string, condition) == 0) {                  return TRUE;          } @@ -1082,18 +1119,21 @@ gsm_autostart_app_get_autorestart (GsmApp *app)  {          gboolean res;          gboolean autorestart; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app)); -        if (GSM_AUTOSTART_APP (app)->priv->desktop_file == NULL) { +        if (priv->desktop_file == NULL) {                  return FALSE;          }          autorestart = FALSE; -        res = egg_desktop_file_has_key (GSM_AUTOSTART_APP (app)->priv->desktop_file, +        res = egg_desktop_file_has_key (priv->desktop_file,                                          GSM_AUTOSTART_APP_AUTORESTART_KEY,                                          NULL);          if (res) { -                autorestart = egg_desktop_file_get_boolean (GSM_AUTOSTART_APP (app)->priv->desktop_file, +                autorestart = egg_desktop_file_get_boolean (priv->desktop_file,                                                              GSM_AUTOSTART_APP_AUTORESTART_KEY,                                                              NULL);          } @@ -1106,12 +1146,15 @@ gsm_autostart_app_get_app_id (GsmApp *app)  {          const char *location;          const char *slash; +        GsmAutostartAppPrivate *priv; + +        priv = gsm_autostart_app_get_instance_private (GSM_AUTOSTART_APP(app)); -        if (GSM_AUTOSTART_APP (app)->priv->desktop_file == NULL) { +        if (priv->desktop_file == NULL) {                  return NULL;          } -        location = egg_desktop_file_get_source (GSM_AUTOSTART_APP (app)->priv->desktop_file); +        location = egg_desktop_file_get_source (priv->desktop_file);          slash = strrchr (location, '/');          if (slash != NULL) { @@ -1124,9 +1167,12 @@ gsm_autostart_app_get_app_id (GsmApp *app)  static int  gsm_autostart_app_peek_autostart_delay (GsmApp *app)  { +        GsmAutostartAppPrivate *priv;          GsmAutostartApp *aapp = GSM_AUTOSTART_APP (app); -        return aapp->priv->autostart_delay; +        priv = gsm_autostart_app_get_instance_private (aapp); + +        return priv->autostart_delay;  }  static GObject * @@ -1188,8 +1234,6 @@ gsm_autostart_app_class_init (GsmAutostartAppClass *klass)                                G_TYPE_NONE,                                1,                                G_TYPE_BOOLEAN); - -        g_type_class_add_private (object_class, sizeof (GsmAutostartAppPrivate));  }  GsmApp * diff --git a/mate-session/gsm-autostart-app.h b/mate-session/gsm-autostart-app.h index 4c45338..ff92fca 100644 --- a/mate-session/gsm-autostart-app.h +++ b/mate-session/gsm-autostart-app.h @@ -26,27 +26,10 @@  #include <X11/SM/SMlib.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_AUTOSTART_APP            (gsm_autostart_app_get_type ()) -#define GSM_AUTOSTART_APP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_AUTOSTART_APP, GsmAutostartApp)) -#define GSM_AUTOSTART_APP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_AUTOSTART_APP, GsmAutostartAppClass)) -#define GSM_IS_AUTOSTART_APP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_AUTOSTART_APP)) -#define GSM_IS_AUTOSTART_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_AUTOSTART_APP)) -#define GSM_AUTOSTART_APP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_AUTOSTART_APP, GsmAutostartAppClass)) - -typedef struct _GsmAutostartApp        GsmAutostartApp; -typedef struct _GsmAutostartAppClass   GsmAutostartAppClass; -typedef struct _GsmAutostartAppPrivate GsmAutostartAppPrivate; - -struct _GsmAutostartApp -{ -        GsmApp parent; - -        GsmAutostartAppPrivate *priv; -}; +G_DECLARE_DERIVABLE_TYPE (GsmAutostartApp, gsm_autostart_app, GSM, AUTOSTART_APP, GsmApp)  struct _GsmAutostartAppClass  { @@ -72,8 +55,6 @@ GsmApp *gsm_autostart_app_new                (const char *desktop_file);  #define GSM_AUTOSTART_APP_DISCARD_KEY     "X-MATE-Autostart-discard-exec"  #define GSM_AUTOSTART_APP_DELAY_KEY       "X-MATE-Autostart-Delay" -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_AUTOSTART_APP_H__ */ diff --git a/mate-session/gsm-client.c b/mate-session/gsm-client.c index 2909d99..13c6169 100644 --- a/mate-session/gsm-client.c +++ b/mate-session/gsm-client.c @@ -31,16 +31,14 @@  static guint32 client_serial = 1; -#define GSM_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_CLIENT, GsmClientPrivate)) - -struct GsmClientPrivate -{ +typedef struct { +        GObject          parent;          char            *id;          char            *startup_id;          char            *app_id;          guint            status;          DBusGConnection *connection; -}; +} GsmClientPrivate;  enum {          PROP_0, @@ -58,7 +56,7 @@ enum {  static guint signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_ABSTRACT_TYPE (GsmClient, gsm_client, G_TYPE_OBJECT) +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GsmClient, gsm_client, G_TYPE_OBJECT)  GQuark  gsm_client_error_quark (void) @@ -111,10 +109,12 @@ static gboolean  register_client (GsmClient *client)  {          GError *error; +        GsmClientPrivate *priv;          error = NULL; -        client->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -        if (client->priv->connection == NULL) { +        priv = gsm_client_get_instance_private (client); +        priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); +        if (priv->connection == NULL) {                  if (error != NULL) {                          g_critical ("error getting session bus: %s", error->message);                          g_error_free (error); @@ -122,7 +122,7 @@ register_client (GsmClient *client)                  return FALSE;          } -        dbus_g_connection_register_g_object (client->priv->connection, client->priv->id, G_OBJECT (client)); +        dbus_g_connection_register_g_object (priv->connection, priv->id, G_OBJECT (client));          return TRUE;  } @@ -134,13 +134,14 @@ gsm_client_constructor (GType                  type,  {          GsmClient *client;          gboolean   res; +        GsmClientPrivate *priv;          client = GSM_CLIENT (G_OBJECT_CLASS (gsm_client_parent_class)->constructor (type,                                                                                      n_construct_properties,                                                                                      construct_properties)); - -        g_free (client->priv->id); -        client->priv->id = g_strdup_printf ("/org/gnome/SessionManager/Client%u", get_next_client_serial ()); +        priv = gsm_client_get_instance_private (client); +        g_free (priv->id); +        priv->id = g_strdup_printf ("/org/gnome/SessionManager/Client%u", get_next_client_serial ());          res = register_client (client);          if (! res) { @@ -153,24 +154,25 @@ gsm_client_constructor (GType                  type,  static void  gsm_client_init (GsmClient *client)  { -        client->priv = GSM_CLIENT_GET_PRIVATE (client);  }  static void  gsm_client_finalize (GObject *object)  {          GsmClient *client; +        GsmClientPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSM_IS_CLIENT (object));          client = GSM_CLIENT (object); +        priv = gsm_client_get_instance_private (client); -        g_return_if_fail (client->priv != NULL); +        g_return_if_fail (priv != NULL); -        g_free (client->priv->id); -        g_free (client->priv->startup_id); -        g_free (client->priv->app_id); +        g_free (priv->id); +        g_free (priv->startup_id); +        g_free (priv->app_id);          G_OBJECT_CLASS (gsm_client_parent_class)->finalize (object);  } @@ -179,9 +181,12 @@ void  gsm_client_set_status (GsmClient *client,                         guint      status)  { +        GsmClientPrivate *priv;          g_return_if_fail (GSM_IS_CLIENT (client)); -        if (client->priv->status != status) { -                client->priv->status = status; + +        priv = gsm_client_get_instance_private (client); +        if (priv->status != status) { +                priv->status = status;                  g_object_notify (G_OBJECT (client), "status");          }  } @@ -190,14 +195,17 @@ static void  gsm_client_set_startup_id (GsmClient  *client,                             const char *startup_id)  { +        GsmClientPrivate *priv;          g_return_if_fail (GSM_IS_CLIENT (client)); -        g_free (client->priv->startup_id); +        priv = gsm_client_get_instance_private (client); + +        g_free (priv->startup_id);          if (startup_id != NULL) { -                client->priv->startup_id = g_strdup (startup_id); +                priv->startup_id = g_strdup (startup_id);          } else { -                client->priv->startup_id = g_strdup (""); +                priv->startup_id = g_strdup ("");          }          g_object_notify (G_OBJECT (client), "startup-id");  } @@ -206,14 +214,17 @@ void  gsm_client_set_app_id (GsmClient  *client,                         const char *app_id)  { +        GsmClientPrivate *priv;          g_return_if_fail (GSM_IS_CLIENT (client)); -        g_free (client->priv->app_id); +        priv = gsm_client_get_instance_private (client); + +        g_free (priv->app_id);          if (app_id != NULL) { -                client->priv->app_id = g_strdup (app_id); +                priv->app_id = g_strdup (app_id);          } else { -                client->priv->app_id = g_strdup (""); +                priv->app_id = g_strdup ("");          }          g_object_notify (G_OBJECT (client), "app-id");  } @@ -251,18 +262,20 @@ gsm_client_get_property (GObject    *object,                           GParamSpec *pspec)  {          GsmClient *self; +        GsmClientPrivate *priv;          self = GSM_CLIENT (object); +        priv = gsm_client_get_instance_private (self);          switch (prop_id) {          case PROP_STARTUP_ID: -                g_value_set_string (value, self->priv->startup_id); +                g_value_set_string (value, priv->startup_id);                  break;          case PROP_APP_ID: -                g_value_set_string (value, self->priv->app_id); +                g_value_set_string (value, priv->app_id);                  break;          case PROP_STATUS: -                g_value_set_uint (value, self->priv->status); +                g_value_set_uint (value, priv->status);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -285,13 +298,15 @@ static void  gsm_client_dispose (GObject *object)  {          GsmClient *client; +        GsmClientPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSM_IS_CLIENT (object));          client = GSM_CLIENT (object); +        priv = gsm_client_get_instance_private (client); -        g_debug ("GsmClient: disposing %s", client->priv->id); +        g_debug ("GsmClient: disposing %s", priv->id);          G_OBJECT_CLASS (gsm_client_parent_class)->dispose (object);  } @@ -352,17 +367,18 @@ gsm_client_class_init (GsmClientClass *klass)                                                              GSM_CLIENT_UNREGISTERED,                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -        g_type_class_add_private (klass, sizeof (GsmClientPrivate)); -          dbus_g_object_type_install_info (GSM_TYPE_CLIENT, &dbus_glib_gsm_client_object_info);  }  const char *  gsm_client_peek_id (GsmClient *client)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), NULL); -        return client->priv->id; +        priv = gsm_client_get_instance_private (client); + +        return priv->id;  }  /** @@ -378,25 +394,34 @@ gsm_client_peek_id (GsmClient *client)  const char *  gsm_client_peek_app_id (GsmClient *client)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), NULL); -        return client->priv->app_id; +        priv = gsm_client_get_instance_private (client); + +        return priv->app_id;  }  const char *  gsm_client_peek_startup_id (GsmClient *client)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), NULL); -        return client->priv->startup_id; +        priv = gsm_client_get_instance_private (client); + +        return priv->startup_id;  }  guint  gsm_client_peek_status (GsmClient *client)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), GSM_CLIENT_UNREGISTERED); -        return client->priv->status; +        priv = gsm_client_get_instance_private (client); + +        return priv->status;  }  guint @@ -412,9 +437,12 @@ gsm_client_get_startup_id (GsmClient *client,                             char     **id,                             GError   **error)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); -        *id = g_strdup (client->priv->startup_id); +        priv = gsm_client_get_instance_private (client); + +        *id = g_strdup (priv->startup_id);          return TRUE;  } @@ -424,9 +452,12 @@ gsm_client_get_app_id (GsmClient *client,                         char     **id,                         GError   **error)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); -        *id = g_strdup (client->priv->app_id); +        priv = gsm_client_get_instance_private (client); + +        *id = g_strdup (priv->app_id);          return TRUE;  } @@ -448,9 +479,12 @@ gsm_client_get_status (GsmClient *client,                         guint     *status,                         GError   **error)  { +        GsmClientPrivate *priv;          g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); -        *status = client->priv->status; +        priv = gsm_client_get_instance_private (client); + +        *status = priv->status;          return TRUE;  } diff --git a/mate-session/gsm-client.h b/mate-session/gsm-client.h index 91e9cba..b623742 100644 --- a/mate-session/gsm-client.h +++ b/mate-session/gsm-client.h @@ -26,21 +26,10 @@  #include <glib-object.h>  #include <sys/types.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_CLIENT            (gsm_client_get_type ()) -#define GSM_CLIENT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_CLIENT, GsmClient)) -#define GSM_CLIENT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_CLIENT, GsmClientClass)) -#define GSM_IS_CLIENT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_CLIENT)) -#define GSM_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_CLIENT)) -#define GSM_CLIENT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_CLIENT, GsmClientClass)) - -typedef struct _GsmClient        GsmClient; -typedef struct _GsmClientClass   GsmClientClass; - -typedef struct GsmClientPrivate GsmClientPrivate; +G_DECLARE_DERIVABLE_TYPE (GsmClient, gsm_client, GSM, CLIENT, GObject)  typedef enum {          GSM_CLIENT_UNREGISTERED = 0, @@ -62,12 +51,6 @@ typedef enum {          GSM_CLIENT_END_SESSION_FLAG_LAST     = 1 << 2  } GsmClientEndSessionFlag; -struct _GsmClient -{ -        GObject           parent; -        GsmClientPrivate *priv; -}; -  struct _GsmClientClass  {          GObjectClass parent_class; @@ -110,7 +93,6 @@ typedef enum  GType                 gsm_client_error_get_type             (void);  GQuark                gsm_client_error_quark                (void); -  GType                 gsm_client_get_type                   (void) G_GNUC_CONST;  const char           *gsm_client_peek_id                    (GsmClient  *client); @@ -168,8 +150,6 @@ void                  gsm_client_end_session_response       (GsmClient  *client,                                                               gboolean    cancel,                                                               const char *reason); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_CLIENT_H__ */ diff --git a/mate-session/gsm-consolekit.c b/mate-session/gsm-consolekit.c index 5f39358..31dbb70 100644 --- a/mate-session/gsm-consolekit.c +++ b/mate-session/gsm-consolekit.c @@ -43,16 +43,13 @@  #define CK_SEAT_INTERFACE    "org.freedesktop.ConsoleKit.Seat"  #define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session" -#define GSM_CONSOLEKIT_GET_PRIVATE(o)                                   \ -        (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_CONSOLEKIT, GsmConsolekitPrivate)) - -struct _GsmConsolekitPrivate +typedef struct  {          DBusGConnection *dbus_connection;          DBusGProxy      *bus_proxy;          DBusGProxy      *ck_proxy;          guint32          is_connected : 1; -}; +} GsmConsolekitPrivate;  enum {          PROP_0, @@ -83,7 +80,7 @@ static void     gsm_consolekit_on_name_owner_changed (DBusGProxy        *bus_pro                                                        const char        *new_owner,                                                        GsmConsolekit   *manager); -G_DEFINE_TYPE (GsmConsolekit, gsm_consolekit, G_TYPE_OBJECT); +G_DEFINE_TYPE_WITH_PRIVATE (GsmConsolekit, gsm_consolekit, G_TYPE_OBJECT);  static void  gsm_consolekit_get_property (GObject    *object, @@ -92,11 +89,14 @@ gsm_consolekit_get_property (GObject    *object,                               GParamSpec *pspec)  {          GsmConsolekit *manager = GSM_CONSOLEKIT (object); +        GsmConsolekitPrivate *priv; + +        priv = gsm_consolekit_get_instance_private (manager);          switch (prop_id) {          case PROP_IS_CONNECTED:                  g_value_set_boolean (value, -                                     manager->priv->is_connected); +                                     priv->is_connected);                  break;          default: @@ -148,7 +148,6 @@ gsm_consolekit_class_init (GsmConsolekitClass *manager_class)                                G_TYPE_NONE,                                3, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_POINTER); -        g_type_class_add_private (manager_class, sizeof (GsmConsolekitPrivate));  }  static DBusHandlerResult @@ -177,64 +176,66 @@ gsm_consolekit_ensure_ck_connection (GsmConsolekit  *manager,  {          GError  *connection_error;          gboolean is_connected; +        GsmConsolekitPrivate *priv;          connection_error = NULL; +        priv = gsm_consolekit_get_instance_private (manager); -        if (manager->priv->dbus_connection == NULL) { +        if (priv->dbus_connection == NULL) {                  DBusConnection *connection; -                manager->priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, -                                                                 &connection_error); +                priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, +                                                        &connection_error); -                if (manager->priv->dbus_connection == NULL) { +                if (priv->dbus_connection == NULL) {                          g_propagate_error (error, connection_error);                          is_connected = FALSE;                          goto out;                  } -                connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); +                connection = dbus_g_connection_get_connection (priv->dbus_connection);                  dbus_connection_set_exit_on_disconnect (connection, FALSE);                  dbus_connection_add_filter (connection,                                              gsm_consolekit_dbus_filter,                                              manager, NULL);          } -        if (manager->priv->bus_proxy == NULL) { -                manager->priv->bus_proxy = -                        dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection, +        if (priv->bus_proxy == NULL) { +                priv->bus_proxy = +                        dbus_g_proxy_new_for_name_owner (priv->dbus_connection,                                                           DBUS_SERVICE_DBUS,                                                           DBUS_PATH_DBUS,                                                           DBUS_INTERFACE_DBUS,                                                           &connection_error); -                if (manager->priv->bus_proxy == NULL) { +                if (priv->bus_proxy == NULL) {                          g_propagate_error (error, connection_error);                          is_connected = FALSE;                          goto out;                  } -                dbus_g_proxy_add_signal (manager->priv->bus_proxy, +                dbus_g_proxy_add_signal (priv->bus_proxy,                                           "NameOwnerChanged",                                           G_TYPE_STRING,                                           G_TYPE_STRING,                                           G_TYPE_STRING,                                           G_TYPE_INVALID); -                dbus_g_proxy_connect_signal (manager->priv->bus_proxy, +                dbus_g_proxy_connect_signal (priv->bus_proxy,                                               "NameOwnerChanged",                                               G_CALLBACK (gsm_consolekit_on_name_owner_changed),                                               manager, NULL);          } -        if (manager->priv->ck_proxy == NULL) { -                manager->priv->ck_proxy = -                        dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection, +        if (priv->ck_proxy == NULL) { +                priv->ck_proxy = +                        dbus_g_proxy_new_for_name_owner (priv->dbus_connection,                                                           "org.freedesktop.ConsoleKit",                                                           "/org/freedesktop/ConsoleKit/Manager",                                                           "org.freedesktop.ConsoleKit.Manager",                                                           &connection_error); -                if (manager->priv->ck_proxy == NULL) { +                if (priv->ck_proxy == NULL) {                          g_propagate_error (error, connection_error);                          is_connected = FALSE;                          goto out; @@ -244,26 +245,26 @@ gsm_consolekit_ensure_ck_connection (GsmConsolekit  *manager,          is_connected = TRUE;  out: -        if (manager->priv->is_connected != is_connected) { -                manager->priv->is_connected = is_connected; +        if (priv->is_connected != is_connected) { +                priv->is_connected = is_connected;                  g_object_notify (G_OBJECT (manager), "is-connected");          }          if (!is_connected) { -                if (manager->priv->dbus_connection == NULL) { -                        if (manager->priv->bus_proxy != NULL) { -                                g_object_unref (manager->priv->bus_proxy); -                                manager->priv->bus_proxy = NULL; +                if (priv->dbus_connection == NULL) { +                        if (priv->bus_proxy != NULL) { +                                g_object_unref (priv->bus_proxy); +                                priv->bus_proxy = NULL;                          } -                        if (manager->priv->ck_proxy != NULL) { -                                g_object_unref (manager->priv->ck_proxy); -                                manager->priv->ck_proxy = NULL; +                        if (priv->ck_proxy != NULL) { +                                g_object_unref (priv->ck_proxy); +                                priv->ck_proxy = NULL;                          } -                } else if (manager->priv->bus_proxy == NULL) { -                        if (manager->priv->ck_proxy != NULL) { -                                g_object_unref (manager->priv->ck_proxy); -                                manager->priv->ck_proxy = NULL; +                } else if (priv->bus_proxy == NULL) { +                        if (priv->ck_proxy != NULL) { +                                g_object_unref (priv->ck_proxy); +                                priv->ck_proxy = NULL;                          }                  }          } @@ -278,13 +279,17 @@ gsm_consolekit_on_name_owner_changed (DBusGProxy    *bus_proxy,                                        const char    *new_owner,                                        GsmConsolekit *manager)  { +        GsmConsolekitPrivate *priv; +          if (name != NULL && strcmp (name, "org.freedesktop.ConsoleKit") != 0) {                  return;          } -        if (manager->priv->ck_proxy != NULL) { -                g_object_unref (manager->priv->ck_proxy); -                manager->priv->ck_proxy = NULL; +        priv = gsm_consolekit_get_instance_private (manager); + +        if (priv->ck_proxy != NULL) { +                g_object_unref (priv->ck_proxy); +                priv->ck_proxy = NULL;          }          gsm_consolekit_ensure_ck_connection (manager, NULL); @@ -295,8 +300,6 @@ gsm_consolekit_init (GsmConsolekit *manager)  {          GError *error; -        manager->priv = GSM_CONSOLEKIT_GET_PRIVATE (manager); -          error = NULL;          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) { @@ -309,25 +312,28 @@ gsm_consolekit_init (GsmConsolekit *manager)  static void  gsm_consolekit_free_dbus (GsmConsolekit *manager)  { -        if (manager->priv->bus_proxy != NULL) { -                g_object_unref (manager->priv->bus_proxy); -                manager->priv->bus_proxy = NULL; +        GsmConsolekitPrivate *priv; + +        priv = gsm_consolekit_get_instance_private (manager); +        if (priv->bus_proxy != NULL) { +                g_object_unref (priv->bus_proxy); +                priv->bus_proxy = NULL;          } -        if (manager->priv->ck_proxy != NULL) { -                g_object_unref (manager->priv->ck_proxy); -                manager->priv->ck_proxy = NULL; +        if (priv->ck_proxy != NULL) { +                g_object_unref (priv->ck_proxy); +                priv->ck_proxy = NULL;          } -        if (manager->priv->dbus_connection != NULL) { +        if (priv->dbus_connection != NULL) {                  DBusConnection *connection; -                connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); +                connection = dbus_g_connection_get_connection (priv->dbus_connection);                  dbus_connection_remove_filter (connection,                                                 gsm_consolekit_dbus_filter,                                                 manager); -                dbus_g_connection_unref (manager->priv->dbus_connection); -                manager->priv->dbus_connection = NULL; +                dbus_g_connection_unref (priv->dbus_connection); +                priv->dbus_connection = NULL;          }  } @@ -421,8 +427,10 @@ gsm_consolekit_attempt_restart (GsmConsolekit *manager)  {          gboolean res;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -432,7 +440,7 @@ gsm_consolekit_attempt_restart (GsmConsolekit *manager)                  return;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "Restart",                                                INT_MAX,                                                &error, @@ -453,8 +461,10 @@ gsm_consolekit_attempt_stop (GsmConsolekit *manager)  {          gboolean res;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -464,7 +474,7 @@ gsm_consolekit_attempt_stop (GsmConsolekit *manager)                  return;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "Stop",                                                INT_MAX,                                                &error, @@ -485,8 +495,10 @@ gsm_consolekit_attempt_suspend (GsmConsolekit *manager)  {          gboolean res;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -495,7 +507,7 @@ gsm_consolekit_attempt_suspend (GsmConsolekit *manager)                  return;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "Suspend",                                                INT_MAX,                                                &error, @@ -514,8 +526,10 @@ gsm_consolekit_attempt_hibernate (GsmConsolekit *manager)  {          gboolean res;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -524,7 +538,7 @@ gsm_consolekit_attempt_hibernate (GsmConsolekit *manager)                  return;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "Hibernate",                                                INT_MAX,                                                &error, @@ -678,8 +692,10 @@ gsm_consolekit_set_session_idle (GsmConsolekit *manager,          DBusMessage    *reply;          DBusError       dbus_error;          DBusMessageIter iter; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -689,7 +705,7 @@ gsm_consolekit_set_session_idle (GsmConsolekit *manager,          }          session_id = NULL; -        res = get_current_session_id (dbus_g_connection_get_connection (manager->priv->dbus_connection), +        res = get_current_session_id (dbus_g_connection_get_connection (priv->dbus_connection),                                        &session_id);          if (!res) {                  goto out; @@ -711,7 +727,7 @@ gsm_consolekit_set_session_idle (GsmConsolekit *manager,          /* FIXME: use async? */          dbus_error_init (&dbus_error); -        reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (manager->priv->dbus_connection), +        reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (priv->dbus_connection),                                                             message,                                                             -1,                                                             &dbus_error); @@ -785,8 +801,10 @@ gsm_consolekit_can_switch_user (GsmConsolekit *manager)          GError  *error;          char    *seat_id;          gboolean ret; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -795,13 +813,13 @@ gsm_consolekit_can_switch_user (GsmConsolekit *manager)                  return FALSE;          } -        seat_id = get_current_seat_id (dbus_g_connection_get_connection (manager->priv->dbus_connection)); +        seat_id = get_current_seat_id (dbus_g_connection_get_connection (priv->dbus_connection));          if (seat_id == NULL || seat_id[0] == '\0') {                  g_debug ("seat id is not set; can't switch sessions");                  return FALSE;          } -        ret = seat_can_activate_sessions (dbus_g_connection_get_connection (manager->priv->dbus_connection), +        ret = seat_can_activate_sessions (dbus_g_connection_get_connection (priv->dbus_connection),                                            seat_id);          g_free (seat_id); @@ -834,8 +852,10 @@ gsm_consolekit_can_restart (GsmConsolekit *manager)          gboolean res;          gboolean can_restart;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -844,7 +864,7 @@ gsm_consolekit_can_restart (GsmConsolekit *manager)                  return FALSE;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "CanRestart",                                                INT_MAX,                                                &error, @@ -867,8 +887,10 @@ gsm_consolekit_can_stop (GsmConsolekit *manager)          gboolean res;          gboolean can_stop;          GError  *error; +        GsmConsolekitPrivate *priv;          error = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -877,7 +899,7 @@ gsm_consolekit_can_stop (GsmConsolekit *manager)                  return FALSE;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "CanStop",                                                INT_MAX,                                                &error, @@ -902,6 +924,9 @@ gsm_consolekit_can_suspend (GsmConsolekit *manager)          gboolean can_suspend;          gchar *retval;          GError *error = NULL; +        GsmConsolekitPrivate *priv; + +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -910,7 +935,7 @@ gsm_consolekit_can_suspend (GsmConsolekit *manager)                  return FALSE;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "CanSuspend",                                                INT_MAX,                                                &error, @@ -939,6 +964,9 @@ gsm_consolekit_can_hibernate (GsmConsolekit *manager)          gboolean can_hibernate;          gchar *retval;          GError *error = NULL; +        GsmConsolekitPrivate *priv; + +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -947,7 +975,7 @@ gsm_consolekit_can_hibernate (GsmConsolekit *manager)                  return FALSE;          } -        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy, +        res = dbus_g_proxy_call_with_timeout (priv->ck_proxy,                                                "CanHibernate",                                                INT_MAX,                                                &error, @@ -981,10 +1009,12 @@ gsm_consolekit_get_current_session_type (GsmConsolekit *manager)          gchar *ret;          DBusMessageIter iter;          const char *value; +        GsmConsolekitPrivate *priv;          session_id = NULL;          ret = NULL;          gerror = NULL; +        priv = gsm_consolekit_get_instance_private (manager);          if (!gsm_consolekit_ensure_ck_connection (manager, &gerror)) {                  g_warning ("Could not connect to ConsoleKit: %s", @@ -993,7 +1023,7 @@ gsm_consolekit_get_current_session_type (GsmConsolekit *manager)                  goto out;          } -        connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); +        connection = dbus_g_connection_get_connection (priv->dbus_connection);          if (!get_current_session_id (connection, &session_id)) {                  goto out;          } diff --git a/mate-session/gsm-consolekit.h b/mate-session/gsm-consolekit.h index 3dbb4f8..6cffd5b 100644 --- a/mate-session/gsm-consolekit.h +++ b/mate-session/gsm-consolekit.h @@ -27,29 +27,14 @@  #include <glib.h>  #include <glib-object.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_CONSOLEKIT             (gsm_consolekit_get_type ()) -#define GSM_CONSOLEKIT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_CONSOLEKIT, GsmConsolekit)) -#define GSM_CONSOLEKIT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_CONSOLEKIT, GsmConsolekitClass)) -#define GSM_IS_CONSOLEKIT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_CONSOLEKIT)) -#define GSM_IS_CONSOLEKIT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_CONSOLEKIT)) -#define GSM_CONSOLEKIT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), GSM_TYPE_CONSOLEKIT, GsmConsolekitClass))  #define GSM_CONSOLEKIT_ERROR            (gsm_consolekit_error_quark ()) -typedef struct _GsmConsolekit        GsmConsolekit; -typedef struct _GsmConsolekitClass   GsmConsolekitClass; -typedef struct _GsmConsolekitPrivate GsmConsolekitPrivate; -typedef enum   _GsmConsolekitError   GsmConsolekitError; - -struct _GsmConsolekit -{ -        GObject               parent; +G_DECLARE_DERIVABLE_TYPE (GsmConsolekit, gsm_consolekit, GSM, CONSOLEKIT, GObject) -        GsmConsolekitPrivate *priv; -}; +typedef enum   _GsmConsolekitError   GsmConsolekitError;  struct _GsmConsolekitClass  { @@ -71,7 +56,7 @@ enum _GsmConsolekitError {  #define GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW "LoginWindow" -GType            gsm_consolekit_get_type        (void); +GType            gsm_consolekit_get_type        (void) G_GNUC_CONST;  GQuark           gsm_consolekit_error_quark     (void); @@ -106,8 +91,6 @@ gchar           *gsm_consolekit_get_current_session_type (GsmConsolekit *manager  GsmConsolekit   *gsm_get_consolekit             (void); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_CONSOLEKIT_H__ */ diff --git a/mate-session/gsm-dbus-client.c b/mate-session/gsm-dbus-client.c index 3b33170..eba098c 100644 --- a/mate-session/gsm-dbus-client.c +++ b/mate-session/gsm-dbus-client.c @@ -38,13 +38,12 @@  #include "gsm-manager.h"  #include "gsm-util.h" -#define GSM_DBUS_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_DBUS_CLIENT, GsmDBusClientPrivate)) -  #define SM_DBUS_NAME                     "org.gnome.SessionManager"  #define SM_DBUS_CLIENT_PRIVATE_INTERFACE "org.gnome.SessionManager.ClientPrivate" -struct GsmDBusClientPrivate +struct _GsmDBusClient  { +        GsmClient             parent;          char                 *bus_name;          GPid                  caller_pid;          GsmClientRestartStyle restart_style_hint; @@ -98,9 +97,9 @@ setup_connection (GsmDBusClient *client)          dbus_error_init (&error); -        if (client->priv->connection == NULL) { -                client->priv->connection = dbus_bus_get (DBUS_BUS_SESSION, &error); -                if (client->priv->connection == NULL) { +        if (client->connection == NULL) { +                client->connection = dbus_bus_get (DBUS_BUS_SESSION, &error); +                if (client->connection == NULL) {                          if (dbus_error_is_set (&error)) {                                  g_debug ("GsmDbusClient: Couldn't connect to session bus: %s",                                           error.message); @@ -109,8 +108,8 @@ setup_connection (GsmDBusClient *client)                          return FALSE;                  } -                dbus_connection_setup_with_g_main (client->priv->connection, NULL); -                dbus_connection_set_exit_on_disconnect (client->priv->connection, FALSE); +                dbus_connection_setup_with_g_main (client->connection, NULL); +                dbus_connection_set_exit_on_disconnect (client->connection, FALSE);          }          return TRUE; @@ -160,7 +159,7 @@ handle_end_session_response (GsmDBusClient *client,                          g_warning ("Invalid method call: %s", error.message);                          dbus_error_free (&error);                  } -                raise_error (client->priv->connection, +                raise_error (client->connection,                               message,                               DBUS_ERROR_FAILED,                               "There is a syntax error in the invocation of the method EndSessionResponse"); @@ -172,10 +171,10 @@ handle_end_session_response (GsmDBusClient *client,          /* make sure it is from our client */          sender = dbus_message_get_sender (message);          if (sender == NULL -            || IS_STRING_EMPTY (client->priv->bus_name) -            || strcmp (sender, client->priv->bus_name) != 0) { +            || IS_STRING_EMPTY (client->bus_name) +            || strcmp (sender, client->bus_name) != 0) { -                raise_error (client->priv->connection, +                raise_error (client->connection,                               message,                               DBUS_ERROR_FAILED,                               "Caller not recognized as the client"); @@ -191,7 +190,7 @@ handle_end_session_response (GsmDBusClient *client,                                           is_ok, FALSE, FALSE, reason); -        if (! dbus_connection_send (client->priv->connection, reply, NULL)) { +        if (! dbus_connection_send (client->connection, reply, NULL)) {                  g_error ("No memory");          } @@ -247,7 +246,7 @@ gsm_dbus_client_constructor (GType                  type,          }          /* Object path is already registered by base class */ -        dbus_connection_add_filter (client->priv->connection, client_dbus_filter_function, client, NULL); +        dbus_connection_add_filter (client->connection, client_dbus_filter_function, client, NULL);          return G_OBJECT (client);  } @@ -255,7 +254,6 @@ gsm_dbus_client_constructor (GType                  type,  static void  gsm_dbus_client_init (GsmDBusClient *client)  { -        client->priv = GSM_DBUS_CLIENT_GET_PRIVATE (client);  }  /* adapted from PolicyKit */ @@ -335,12 +333,12 @@ gsm_dbus_client_set_bus_name (GsmDBusClient  *client,          g_return_if_fail (GSM_IS_DBUS_CLIENT (client)); -        g_free (client->priv->bus_name); +        g_free (client->bus_name); -        client->priv->bus_name = g_strdup (bus_name); +        client->bus_name = g_strdup (bus_name);          g_object_notify (G_OBJECT (client), "bus-name"); -        if (client->priv->bus_name != NULL) { +        if (client->bus_name != NULL) {                  gboolean res;                  res = get_caller_info (client, bus_name, &uid, &pid); @@ -350,7 +348,7 @@ gsm_dbus_client_set_bus_name (GsmDBusClient  *client,          } else {                  pid = 0;          } -        client->priv->caller_pid = pid; +        client->caller_pid = pid;  }  const char * @@ -358,7 +356,7 @@ gsm_dbus_client_get_bus_name (GsmDBusClient  *client)  {          g_return_val_if_fail (GSM_IS_DBUS_CLIENT (client), NULL); -        return client->priv->bus_name; +        return client->bus_name;  }  static void @@ -393,7 +391,7 @@ gsm_dbus_client_get_property (GObject    *object,          switch (prop_id) {          case PROP_BUS_NAME: -                g_value_set_string (value, self->priv->bus_name); +                g_value_set_string (value, self->bus_name);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -406,7 +404,7 @@ gsm_dbus_client_finalize (GObject *object)  {          GsmDBusClient *client = (GsmDBusClient *) object; -        g_free (client->priv->bus_name); +        g_free (client->bus_name);          G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object);  } @@ -441,11 +439,11 @@ dbus_client_stop (GsmClient *client,          if (message == NULL) {                  goto out;          } -        if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) { +        if (!dbus_message_set_destination (message, dbus_client->bus_name)) {                  goto out;          } -        if (!dbus_connection_send (dbus_client->priv->connection, message, NULL)) { +        if (!dbus_connection_send (dbus_client->connection, message, NULL)) {                  goto out;          } @@ -469,13 +467,13 @@ dbus_client_get_app_name (GsmClient *client)  static GsmClientRestartStyle  dbus_client_get_restart_style_hint (GsmClient *client)  { -        return (GSM_DBUS_CLIENT (client)->priv->restart_style_hint); +        return (GSM_DBUS_CLIENT (client)->restart_style_hint);  }  static guint  dbus_client_get_unix_process_id (GsmClient *client)  { -        return (GSM_DBUS_CLIENT (client)->priv->caller_pid); +        return (GSM_DBUS_CLIENT (client)->caller_pid);  }  static gboolean @@ -490,7 +488,7 @@ dbus_client_query_end_session (GsmClient *client,          ret = FALSE; -        if (dbus_client->priv->bus_name == NULL) { +        if (dbus_client->bus_name == NULL) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -498,7 +496,7 @@ dbus_client_query_end_session (GsmClient *client,                  return FALSE;          } -        g_debug ("GsmDBusClient: sending QueryEndSession signal to %s", dbus_client->priv->bus_name); +        g_debug ("GsmDBusClient: sending QueryEndSession signal to %s", dbus_client->bus_name);          /* unicast the signal to only the registered bus name */          message = dbus_message_new_signal (gsm_client_peek_id (client), @@ -511,7 +509,7 @@ dbus_client_query_end_session (GsmClient *client,                               "Unable to send QueryEndSession message");                  goto out;          } -        if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) { +        if (!dbus_message_set_destination (message, dbus_client->bus_name)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -522,7 +520,7 @@ dbus_client_query_end_session (GsmClient *client,          dbus_message_iter_init_append (message, &iter);          dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags); -        if (!dbus_connection_send (dbus_client->priv->connection, message, NULL)) { +        if (!dbus_connection_send (dbus_client->connection, message, NULL)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -563,7 +561,7 @@ dbus_client_end_session (GsmClient *client,                               "Unable to send EndSession message");                  goto out;          } -        if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) { +        if (!dbus_message_set_destination (message, dbus_client->bus_name)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -574,7 +572,7 @@ dbus_client_end_session (GsmClient *client,          dbus_message_iter_init_append (message, &iter);          dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags); -        if (!dbus_connection_send (dbus_client->priv->connection, message, NULL)) { +        if (!dbus_connection_send (dbus_client->connection, message, NULL)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -610,7 +608,7 @@ dbus_client_cancel_end_session (GsmClient *client,                               "Unable to send CancelEndSession message");                  goto out;          } -        if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) { +        if (!dbus_message_set_destination (message, dbus_client->bus_name)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -618,7 +616,7 @@ dbus_client_cancel_end_session (GsmClient *client,                  goto out;          } -        if (!dbus_connection_send (dbus_client->priv->connection, message, NULL)) { +        if (!dbus_connection_send (dbus_client->connection, message, NULL)) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -646,7 +644,7 @@ gsm_dbus_client_dispose (GObject *object)          client = GSM_DBUS_CLIENT (object); -        dbus_connection_remove_filter (client->priv->connection, client_dbus_filter_function, client); +        dbus_connection_remove_filter (client->connection, client_dbus_filter_function, client);          G_OBJECT_CLASS (gsm_dbus_client_parent_class)->dispose (object);  } @@ -679,8 +677,6 @@ gsm_dbus_client_class_init (GsmDBusClientClass *klass)                                                                "bus-name",                                                                NULL,                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - -        g_type_class_add_private (klass, sizeof (GsmDBusClientPrivate));  }  GsmClient * diff --git a/mate-session/gsm-dbus-client.h b/mate-session/gsm-dbus-client.h index 4b9dc7a..a1007cc 100644 --- a/mate-session/gsm-dbus-client.h +++ b/mate-session/gsm-dbus-client.h @@ -23,32 +23,10 @@  #include "gsm-client.h" -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_DBUS_CLIENT            (gsm_dbus_client_get_type ()) -#define GSM_DBUS_CLIENT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_DBUS_CLIENT, GsmDBusClient)) -#define GSM_DBUS_CLIENT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_DBUS_CLIENT, GsmDBusClientClass)) -#define GSM_IS_DBUS_CLIENT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_DBUS_CLIENT)) -#define GSM_IS_DBUS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_DBUS_CLIENT)) -#define GSM_DBUS_CLIENT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_DBUS_CLIENT, GsmDBusClientClass)) - -typedef struct _GsmDBusClient        GsmDBusClient; -typedef struct _GsmDBusClientClass   GsmDBusClientClass; - -typedef struct GsmDBusClientPrivate  GsmDBusClientPrivate; - -struct _GsmDBusClient -{ -        GsmClient             parent; -        GsmDBusClientPrivate *priv; -}; - -struct _GsmDBusClientClass -{ -        GsmClientClass parent_class; -}; +G_DECLARE_FINAL_TYPE (GsmDBusClient, gsm_dbus_client, GSM, DBUS_CLIENT, GsmClient)  typedef enum  { @@ -64,14 +42,10 @@ GType          gsm_dbus_client_error_get_type     (void);  GQuark         gsm_dbus_client_error_quark        (void); -GType          gsm_dbus_client_get_type           (void) G_GNUC_CONST; -  GsmClient *    gsm_dbus_client_new                (const char     *startup_id,                                                     const char     *bus_name);  const char *   gsm_dbus_client_get_bus_name       (GsmDBusClient  *client); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_DBUS_CLIENT_H__ */ diff --git a/mate-session/gsm-inhibit-dialog.c b/mate-session/gsm-inhibit-dialog.c index 1ea58ed..7c6ec97 100644 --- a/mate-session/gsm-inhibit-dialog.c +++ b/mate-session/gsm-inhibit-dialog.c @@ -43,8 +43,6 @@  #include <X11/extensions/Xrender.h>  #endif -#define GSM_INHIBIT_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_INHIBIT_DIALOG, GsmInhibitDialogPrivate)) -  #define GTKBUILDER_FILE "gsm-inhibit-dialog.ui"  #ifndef DEFAULT_ICON_SIZE @@ -57,8 +55,9 @@  #define DIALOG_RESPONSE_LOCK_SCREEN 1 -struct GsmInhibitDialogPrivate +struct _GsmInhibitDialog  { +        GtkDialog          parent;          GtkBuilder        *xml;          int                action;          gboolean           is_done; @@ -108,7 +107,7 @@ on_response (GsmInhibitDialog *dialog,               gint              response_id)  { -        if (dialog->priv->is_done) { +        if (dialog->is_done) {                  g_signal_stop_emission_by_name (dialog, "response");                  return;          } @@ -119,7 +118,7 @@ on_response (GsmInhibitDialog *dialog,                  lock_screen (dialog);                  break;          default: -                dialog->priv->is_done = TRUE; +                dialog->is_done = TRUE;                  break;          }  } @@ -128,7 +127,7 @@ static void  gsm_inhibit_dialog_set_action (GsmInhibitDialog *dialog,                                 int               action)  { -        dialog->priv->action = action; +        dialog->action = action;  }  static gboolean @@ -142,7 +141,7 @@ find_inhibitor (GsmInhibitDialog *dialog,          g_assert (GSM_IS_INHIBIT_DIALOG (dialog));          found_item = FALSE; -        model = GTK_TREE_MODEL (dialog->priv->list_store); +        model = GTK_TREE_MODEL (dialog->list_store);          if (!gtk_tree_model_get_iter_first (model, iter)) {                  return FALSE; @@ -479,7 +478,7 @@ add_inhibitor (GsmInhibitDialog *dialog,          xid = gsm_inhibitor_peek_toplevel_xid (inhibitor);          g_debug ("GsmInhibitDialog: inhibitor has XID %u", xid); -        if (xid > 0 && dialog->priv->have_xrender) { +        if (xid > 0 && dialog->have_xrender) {                  pixbuf = get_pixbuf_for_window (gdkdisplay, xid, DEFAULT_SNAPSHOT_SIZE, DEFAULT_SNAPSHOT_SIZE);                  if (pixbuf == NULL) {                          g_debug ("GsmInhibitDialog: unable to read pixbuf from %u", xid); @@ -567,7 +566,7 @@ add_inhibitor (GsmInhibitDialog *dialog,                  client_id = gsm_inhibitor_peek_client_id (inhibitor);                  if (! IS_STRING_EMPTY (client_id)) {                          GsmClient *client; -                        client = GSM_CLIENT (gsm_store_lookup (dialog->priv->clients, client_id)); +                        client = GSM_CLIENT (gsm_store_lookup (dialog->clients, client_id));                          if (client != NULL) {                                  freeme = gsm_client_get_app_name (client);                                  name = freeme; @@ -592,7 +591,7 @@ add_inhibitor (GsmInhibitDialog *dialog,                                       NULL);          } -        gtk_list_store_insert_with_values (dialog->priv->list_store, +        gtk_list_store_insert_with_values (dialog->list_store,                                             NULL, 0,                                             INHIBIT_IMAGE_COLUMN, pixbuf,                                             INHIBIT_NAME_COLUMN, name, @@ -628,7 +627,7 @@ update_dialog_text (GsmInhibitDialog *dialog)          const char *header_text;          GtkWidget  *widget; -        if (model_has_one_entry (GTK_TREE_MODEL (dialog->priv->list_store))) { +        if (model_has_one_entry (GTK_TREE_MODEL (dialog->list_store))) {                  g_debug ("Found one entry in model");                  header_text = _("A program is still running:");                  description_text = _("Waiting for the program to finish.  Interrupting the program may cause you to lose work."); @@ -638,7 +637,7 @@ update_dialog_text (GsmInhibitDialog *dialog)                  description_text = _("Waiting for programs to finish.  Interrupting these programs may cause you to lose work.");          } -        widget = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        widget = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       "header-label"));          if (widget != NULL) {                  char *markup; @@ -647,7 +646,7 @@ update_dialog_text (GsmInhibitDialog *dialog)                  g_free (markup);          } -        widget = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        widget = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       "description-label"));          if (widget != NULL) {                  gtk_label_set_text (GTK_LABEL (widget), description_text); @@ -664,7 +663,7 @@ on_store_inhibitor_added (GsmStore          *store,          g_debug ("GsmInhibitDialog: inhibitor added: %s", id); -        if (dialog->priv->is_done) { +        if (dialog->is_done) {                  return;          } @@ -687,18 +686,18 @@ on_store_inhibitor_removed (GsmStore          *store,          g_debug ("GsmInhibitDialog: inhibitor removed: %s", id); -        if (dialog->priv->is_done) { +        if (dialog->is_done) {                  return;          }          /* Remove from model */          if (find_inhibitor (dialog, id, &iter)) { -                gtk_list_store_remove (dialog->priv->list_store, &iter); +                gtk_list_store_remove (dialog->list_store, &iter);                  update_dialog_text (dialog);          }          /* if there are no inhibitors left then trigger response */ -        if (! gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dialog->priv->list_store), &iter)) { +        if (! gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dialog->list_store), &iter)) {                  gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);          }  } @@ -713,28 +712,28 @@ gsm_inhibit_dialog_set_inhibitor_store (GsmInhibitDialog *dialog,                  g_object_ref (store);          } -        if (dialog->priv->inhibitors != NULL) { -                g_signal_handlers_disconnect_by_func (dialog->priv->inhibitors, +        if (dialog->inhibitors != NULL) { +                g_signal_handlers_disconnect_by_func (dialog->inhibitors,                                                        on_store_inhibitor_added,                                                        dialog); -                g_signal_handlers_disconnect_by_func (dialog->priv->inhibitors, +                g_signal_handlers_disconnect_by_func (dialog->inhibitors,                                                        on_store_inhibitor_removed,                                                        dialog); -                g_object_unref (dialog->priv->inhibitors); +                g_object_unref (dialog->inhibitors);          }          g_debug ("GsmInhibitDialog: setting store %p", store); -        dialog->priv->inhibitors = store; +        dialog->inhibitors = store; -        if (dialog->priv->inhibitors != NULL) { -                g_signal_connect (dialog->priv->inhibitors, +        if (dialog->inhibitors != NULL) { +                g_signal_connect (dialog->inhibitors,                                    "added",                                    G_CALLBACK (on_store_inhibitor_added),                                    dialog); -                g_signal_connect (dialog->priv->inhibitors, +                g_signal_connect (dialog->inhibitors,                                    "removed",                                    G_CALLBACK (on_store_inhibitor_removed),                                    dialog); @@ -751,11 +750,11 @@ gsm_inhibit_dialog_set_client_store (GsmInhibitDialog *dialog,                  g_object_ref (store);          } -        if (dialog->priv->clients != NULL) { -                g_object_unref (dialog->priv->clients); +        if (dialog->clients != NULL) { +                g_object_unref (dialog->clients);          } -        dialog->priv->clients = store; +        dialog->clients = store;  }  static void @@ -792,13 +791,13 @@ gsm_inhibit_dialog_get_property (GObject        *object,          switch (prop_id) {          case PROP_ACTION: -                g_value_set_int (value, dialog->priv->action); +                g_value_set_int (value, dialog->action);                  break;          case PROP_INHIBITOR_STORE: -                g_value_set_object (value, dialog->priv->inhibitors); +                g_value_set_object (value, dialog->inhibitors);                  break;          case PROP_CLIENT_STORE: -                g_value_set_object (value, dialog->priv->clients); +                g_value_set_object (value, dialog->clients);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -849,7 +848,7 @@ add_to_model (const char       *id,  static void  populate_model (GsmInhibitDialog *dialog)  { -        gsm_store_foreach_remove (dialog->priv->inhibitors, +        gsm_store_foreach_remove (dialog->inhibitors,                                    (GsmStoreFunc)add_to_model,                                    dialog);          update_dialog_text (dialog); @@ -863,7 +862,7 @@ setup_dialog (GsmInhibitDialog *dialog)          GtkTreeViewColumn *column;          GtkCellRenderer   *renderer; -        switch (dialog->priv->action) { +        switch (dialog->action) {          case GSM_LOGOUT_ACTION_SWITCH_USER:                  button_text = _("Switch User Anyway");                  break; @@ -901,17 +900,17 @@ setup_dialog (GsmInhibitDialog *dialog)                            G_CALLBACK (on_response),                            dialog); -        dialog->priv->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS, -                                                       GDK_TYPE_PIXBUF, -                                                       G_TYPE_STRING, -                                                       G_TYPE_STRING, -                                                       G_TYPE_STRING); +        dialog->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS, +                                                 GDK_TYPE_PIXBUF, +                                                 G_TYPE_STRING, +                                                 G_TYPE_STRING, +                                                 G_TYPE_STRING); -        treeview = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        treeview = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                         "inhibitors-treeview"));          gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);          gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), -                                 GTK_TREE_MODEL (dialog->priv->list_store)); +                                 GTK_TREE_MODEL (dialog->list_store));          /* IMAGE COLUMN */          renderer = gtk_cell_renderer_pixbuf_new (); @@ -953,25 +952,25 @@ gsm_inhibit_dialog_constructor (GType                  type,          GdkDisplay *gdkdisplay;  #endif /* HAVE_XRENDER */          dialog = GSM_INHIBIT_DIALOG (G_OBJECT_CLASS (gsm_inhibit_dialog_parent_class)->constructor (type, -                                                                                                                  n_construct_properties, -                                                                                                                  construct_properties)); +                                                                                                    n_construct_properties, +                                                                                                    construct_properties));  #ifdef HAVE_XRENDER          gdkdisplay = gdk_display_get_default ();          gdk_x11_display_error_trap_push (gdkdisplay); -        if (XRenderQueryExtension (GDK_DISPLAY_XDISPLAY (gdkdisplay), &dialog->priv->xrender_event_base, &dialog->priv->xrender_error_base)) { +        if (XRenderQueryExtension (GDK_DISPLAY_XDISPLAY (gdkdisplay), &dialog->xrender_event_base, &dialog->xrender_error_base)) {                  g_debug ("GsmInhibitDialog: Initialized XRender extension"); -                dialog->priv->have_xrender = TRUE; +                dialog->have_xrender = TRUE;          } else {                  g_debug ("GsmInhibitDialog: Unable to initialize XRender extension"); -                dialog->priv->have_xrender = FALSE; +                dialog->have_xrender = FALSE;          }          gdk_display_sync (gdkdisplay);          gdk_x11_display_error_trap_pop_ignored (gdkdisplay);  #endif /* HAVE_XRENDER */          /* FIXME: turn this on when it is ready */ -        dialog->priv->have_xrender = FALSE; +        dialog->have_xrender = FALSE;          setup_dialog (dialog); @@ -992,26 +991,26 @@ gsm_inhibit_dialog_dispose (GObject *object)          g_debug ("GsmInhibitDialog: dispose called"); -        if (dialog->priv->list_store != NULL) { -                g_object_unref (dialog->priv->list_store); -                dialog->priv->list_store = NULL; +        if (dialog->list_store != NULL) { +                g_object_unref (dialog->list_store); +                dialog->list_store = NULL;          } -        if (dialog->priv->inhibitors != NULL) { -                g_signal_handlers_disconnect_by_func (dialog->priv->inhibitors, +        if (dialog->inhibitors != NULL) { +                g_signal_handlers_disconnect_by_func (dialog->inhibitors,                                                        on_store_inhibitor_added,                                                        dialog); -                g_signal_handlers_disconnect_by_func (dialog->priv->inhibitors, +                g_signal_handlers_disconnect_by_func (dialog->inhibitors,                                                        on_store_inhibitor_removed,                                                        dialog); -                g_object_unref (dialog->priv->inhibitors); -                dialog->priv->inhibitors = NULL; +                g_object_unref (dialog->inhibitors); +                dialog->inhibitors = NULL;          } -        if (dialog->priv->xml != NULL) { -                g_object_unref (dialog->priv->xml); -                dialog->priv->xml = NULL; +        if (dialog->xml != NULL) { +                g_object_unref (dialog->xml); +                dialog->xml = NULL;          }          G_OBJECT_CLASS (gsm_inhibit_dialog_parent_class)->dispose (object); @@ -1051,8 +1050,6 @@ gsm_inhibit_dialog_class_init (GsmInhibitDialogClass *klass)                                                                NULL,                                                                GSM_TYPE_STORE,                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - -        g_type_class_add_private (klass, sizeof (GsmInhibitDialogPrivate));  }  static void @@ -1062,13 +1059,11 @@ gsm_inhibit_dialog_init (GsmInhibitDialog *dialog)          GtkWidget *widget;          GError    *error; -        dialog->priv = GSM_INHIBIT_DIALOG_GET_PRIVATE (dialog); - -        dialog->priv->xml = gtk_builder_new (); -        gtk_builder_set_translation_domain (dialog->priv->xml, GETTEXT_PACKAGE); +        dialog->xml = gtk_builder_new (); +        gtk_builder_set_translation_domain (dialog->xml, GETTEXT_PACKAGE);          error = NULL; -        if (!gtk_builder_add_from_file (dialog->priv->xml, +        if (!gtk_builder_add_from_file (dialog->xml,                                          GTKBUILDER_DIR "/" GTKBUILDER_FILE,                                          &error)) {                  if (error) { @@ -1081,7 +1076,7 @@ gsm_inhibit_dialog_init (GsmInhibitDialog *dialog)          }          content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); -        widget = GTK_WIDGET (gtk_builder_get_object (dialog->priv->xml, +        widget = GTK_WIDGET (gtk_builder_get_object (dialog->xml,                                                       "main-box"));          gtk_container_add (GTK_CONTAINER (content_area), widget); @@ -1103,7 +1098,7 @@ gsm_inhibit_dialog_finalize (GObject *object)          dialog = GSM_INHIBIT_DIALOG (object); -        g_return_if_fail (dialog->priv != NULL); +        g_return_if_fail (dialog != NULL);          g_debug ("GsmInhibitDialog: finalizing"); diff --git a/mate-session/gsm-inhibit-dialog.h b/mate-session/gsm-inhibit-dialog.h index c48dc90..89c7121 100644 --- a/mate-session/gsm-inhibit-dialog.h +++ b/mate-session/gsm-inhibit-dialog.h @@ -26,18 +26,10 @@  #include "gsm-store.h" -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_INHIBIT_DIALOG         (gsm_inhibit_dialog_get_type ()) -#define GSM_INHIBIT_DIALOG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_INHIBIT_DIALOG, GsmInhibitDialog)) -#define GSM_INHIBIT_DIALOG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_INHIBIT_DIALOG, GsmInhibitDialogClass)) -#define GSM_IS_INHIBIT_DIALOG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_INHIBIT_DIALOG)) -#define GSM_IS_INHIBIT_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_INHIBIT_DIALOG)) -#define GSM_INHIBIT_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_INHIBIT_DIALOG, GsmInhibitDialogClass)) - -typedef struct GsmInhibitDialogPrivate GsmInhibitDialogPrivate; +G_DECLARE_FINAL_TYPE (GsmInhibitDialog, gsm_inhibit_dialog, GSM, INHIBIT_DIALOG, GtkDialog)  typedef enum  { @@ -49,26 +41,11 @@ typedef enum          GSM_LOGOUT_ACTION_SLEEP  } GsmLogoutAction; -typedef struct -{ -        GtkDialog                parent; -        GsmInhibitDialogPrivate *priv; -} GsmInhibitDialog; - -typedef struct -{ -        GtkDialogClass   parent_class; -} GsmInhibitDialogClass; - -GType                  gsm_inhibit_dialog_get_type           (void); -  GtkWidget            * gsm_inhibit_dialog_new                (GsmStore         *inhibitors,                                                                GsmStore         *clients,                                                                int               action);  GtkTreeModel         * gsm_inhibit_dialog_get_model          (GsmInhibitDialog *dialog); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_INHIBIT_DIALOG_H */ diff --git a/mate-session/gsm-inhibitor.c b/mate-session/gsm-inhibitor.c index 6f4e229..6129ddb 100644 --- a/mate-session/gsm-inhibitor.c +++ b/mate-session/gsm-inhibitor.c @@ -34,10 +34,9 @@  static guint32 inhibitor_serial = 1; -#define GSM_INHIBITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_INHIBITOR, GsmInhibitorPrivate)) - -struct GsmInhibitorPrivate +struct _GsmInhibitor  { +        GObject parent;          char *id;          char *bus_name;          char *app_id; @@ -115,8 +114,8 @@ register_inhibitor (GsmInhibitor *inhibitor)          GError *error;          error = NULL; -        inhibitor->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -        if (inhibitor->priv->connection == NULL) { +        inhibitor->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); +        if (inhibitor->connection == NULL) {                  if (error != NULL) {                          g_critical ("error getting session bus: %s", error->message);                          g_error_free (error); @@ -124,7 +123,7 @@ register_inhibitor (GsmInhibitor *inhibitor)                  return FALSE;          } -        dbus_g_connection_register_g_object (inhibitor->priv->connection, inhibitor->priv->id, G_OBJECT (inhibitor)); +        dbus_g_connection_register_g_object (inhibitor->connection, inhibitor->id, G_OBJECT (inhibitor));          return TRUE;  } @@ -141,8 +140,8 @@ gsm_inhibitor_constructor (GType                  type,                                                                                               n_construct_properties,                                                                                               construct_properties)); -        g_free (inhibitor->priv->id); -        inhibitor->priv->id = g_strdup_printf ("/org/gnome/SessionManager/Inhibitor%u", get_next_inhibitor_serial ()); +        g_free (inhibitor->id); +        inhibitor->id = g_strdup_printf ("/org/gnome/SessionManager/Inhibitor%u", get_next_inhibitor_serial ());          res = register_inhibitor (inhibitor);          if (! res) {                  g_warning ("Unable to register inhibitor with session bus"); @@ -154,7 +153,6 @@ gsm_inhibitor_constructor (GType                  type,  static void  gsm_inhibitor_init (GsmInhibitor *inhibitor)  { -        inhibitor->priv = GSM_INHIBITOR_GET_PRIVATE (inhibitor);  }  static void @@ -163,12 +161,12 @@ gsm_inhibitor_set_bus_name (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        g_free (inhibitor->priv->bus_name); +        g_free (inhibitor->bus_name);          if (bus_name != NULL) { -                inhibitor->priv->bus_name = g_strdup (bus_name); +                inhibitor->bus_name = g_strdup (bus_name);          } else { -                inhibitor->priv->bus_name = g_strdup (""); +                inhibitor->bus_name = g_strdup ("");          }          g_object_notify (G_OBJECT (inhibitor), "bus-name");  } @@ -179,9 +177,9 @@ gsm_inhibitor_set_app_id (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        g_free (inhibitor->priv->app_id); +        g_free (inhibitor->app_id); -        inhibitor->priv->app_id = g_strdup (app_id); +        inhibitor->app_id = g_strdup (app_id);          g_object_notify (G_OBJECT (inhibitor), "app-id");  } @@ -191,14 +189,14 @@ gsm_inhibitor_set_client_id (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        g_free (inhibitor->priv->client_id); +        g_free (inhibitor->client_id);          g_debug ("GsmInhibitor: setting client-id = %s", client_id);          if (client_id != NULL) { -                inhibitor->priv->client_id = g_strdup (client_id); +                inhibitor->client_id = g_strdup (client_id);          } else { -                inhibitor->priv->client_id = g_strdup (""); +                inhibitor->client_id = g_strdup ("");          }          g_object_notify (G_OBJECT (inhibitor), "client-id");  } @@ -209,12 +207,12 @@ gsm_inhibitor_set_reason (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        g_free (inhibitor->priv->reason); +        g_free (inhibitor->reason);          if (reason != NULL) { -                inhibitor->priv->reason = g_strdup (reason); +                inhibitor->reason = g_strdup (reason);          } else { -                inhibitor->priv->reason = g_strdup (""); +                inhibitor->reason = g_strdup ("");          }          g_object_notify (G_OBJECT (inhibitor), "reason");  } @@ -225,8 +223,8 @@ gsm_inhibitor_set_cookie (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        if (inhibitor->priv->cookie != cookie) { -                inhibitor->priv->cookie = cookie; +        if (inhibitor->cookie != cookie) { +                inhibitor->cookie = cookie;                  g_object_notify (G_OBJECT (inhibitor), "cookie");          }  } @@ -237,8 +235,8 @@ gsm_inhibitor_set_flags (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        if (inhibitor->priv->flags != flags) { -                inhibitor->priv->flags = flags; +        if (inhibitor->flags != flags) { +                inhibitor->flags = flags;                  g_object_notify (G_OBJECT (inhibitor), "flags");          }  } @@ -249,8 +247,8 @@ gsm_inhibitor_set_toplevel_xid (GsmInhibitor  *inhibitor,  {          g_return_if_fail (GSM_IS_INHIBITOR (inhibitor)); -        if (inhibitor->priv->toplevel_xid != xid) { -                inhibitor->priv->toplevel_xid = xid; +        if (inhibitor->toplevel_xid != xid) { +                inhibitor->toplevel_xid = xid;                  g_object_notify (G_OBJECT (inhibitor), "toplevel-xid");          }  } @@ -260,7 +258,7 @@ gsm_inhibitor_peek_bus_name (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), NULL); -        return inhibitor->priv->bus_name; +        return inhibitor->bus_name;  }  gboolean @@ -270,8 +268,8 @@ gsm_inhibitor_get_app_id (GsmInhibitor *inhibitor,  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE); -        if (inhibitor->priv->app_id != NULL) { -                *id = g_strdup (inhibitor->priv->app_id); +        if (inhibitor->app_id != NULL) { +                *id = g_strdup (inhibitor->app_id);          } else {                  *id = g_strdup ("");          } @@ -287,7 +285,7 @@ gsm_inhibitor_get_client_id (GsmInhibitor *inhibitor,          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE);          /* object paths are not allowed to be NULL or blank */ -        if (IS_STRING_EMPTY (inhibitor->priv->client_id)) { +        if (IS_STRING_EMPTY (inhibitor->client_id)) {                  g_set_error (error,                               GSM_INHIBITOR_ERROR,                               GSM_INHIBITOR_ERROR_NOT_SET, @@ -295,7 +293,7 @@ gsm_inhibitor_get_client_id (GsmInhibitor *inhibitor,                  return FALSE;          } -        *id = g_strdup (inhibitor->priv->client_id); +        *id = g_strdup (inhibitor->client_id);          g_debug ("GsmInhibitor: getting client-id = '%s'", *id); @@ -309,8 +307,8 @@ gsm_inhibitor_get_reason (GsmInhibitor *inhibitor,  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE); -        if (inhibitor->priv->reason != NULL) { -                *reason = g_strdup (inhibitor->priv->reason); +        if (inhibitor->reason != NULL) { +                *reason = g_strdup (inhibitor->reason);          } else {                  *reason = g_strdup ("");          } @@ -325,7 +323,7 @@ gsm_inhibitor_get_flags (GsmInhibitor *inhibitor,  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE); -        *flags = inhibitor->priv->flags; +        *flags = inhibitor->flags;          return TRUE;  } @@ -337,7 +335,7 @@ gsm_inhibitor_get_toplevel_xid (GsmInhibitor *inhibitor,  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE); -        *xid = inhibitor->priv->toplevel_xid; +        *xid = inhibitor->toplevel_xid;          return TRUE;  } @@ -347,7 +345,7 @@ gsm_inhibitor_peek_id (GsmInhibitor *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), NULL); -        return inhibitor->priv->id; +        return inhibitor->id;  }  const char * @@ -355,7 +353,7 @@ gsm_inhibitor_peek_app_id (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), NULL); -        return inhibitor->priv->app_id; +        return inhibitor->app_id;  }  const char * @@ -363,7 +361,7 @@ gsm_inhibitor_peek_client_id (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), NULL); -        return inhibitor->priv->client_id; +        return inhibitor->client_id;  }  const char * @@ -371,7 +369,7 @@ gsm_inhibitor_peek_reason (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), NULL); -        return inhibitor->priv->reason; +        return inhibitor->reason;  }  guint @@ -379,7 +377,7 @@ gsm_inhibitor_peek_flags (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), 0); -        return inhibitor->priv->flags; +        return inhibitor->flags;  }  guint @@ -387,7 +385,7 @@ gsm_inhibitor_peek_toplevel_xid (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), 0); -        return inhibitor->priv->toplevel_xid; +        return inhibitor->toplevel_xid;  }  guint @@ -395,7 +393,7 @@ gsm_inhibitor_peek_cookie (GsmInhibitor  *inhibitor)  {          g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), 0); -        return inhibitor->priv->cookie; +        return inhibitor->cookie;  }  static void @@ -448,25 +446,25 @@ gsm_inhibitor_get_property (GObject    *object,          switch (prop_id) {          case PROP_BUS_NAME: -                g_value_set_string (value, self->priv->bus_name); +                g_value_set_string (value, self->bus_name);                  break;          case PROP_APP_ID: -                g_value_set_string (value, self->priv->app_id); +                g_value_set_string (value, self->app_id);                  break;          case PROP_CLIENT_ID: -                g_value_set_string (value, self->priv->client_id); +                g_value_set_string (value, self->client_id);                  break;          case PROP_REASON: -                g_value_set_string (value, self->priv->reason); +                g_value_set_string (value, self->reason);                  break;          case PROP_FLAGS: -                g_value_set_uint (value, self->priv->flags); +                g_value_set_uint (value, self->flags);                  break;          case PROP_COOKIE: -                g_value_set_uint (value, self->priv->cookie); +                g_value_set_uint (value, self->cookie);                  break;          case PROP_TOPLEVEL_XID: -                g_value_set_uint (value, self->priv->toplevel_xid); +                g_value_set_uint (value, self->toplevel_xid);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -479,11 +477,11 @@ gsm_inhibitor_finalize (GObject *object)  {          GsmInhibitor *inhibitor = (GsmInhibitor *) object; -        g_free (inhibitor->priv->id); -        g_free (inhibitor->priv->bus_name); -        g_free (inhibitor->priv->app_id); -        g_free (inhibitor->priv->client_id); -        g_free (inhibitor->priv->reason); +        g_free (inhibitor->id); +        g_free (inhibitor->bus_name); +        g_free (inhibitor->app_id); +        g_free (inhibitor->client_id); +        g_free (inhibitor->reason);          G_OBJECT_CLASS (gsm_inhibitor_parent_class)->finalize (object);  } @@ -556,7 +554,6 @@ gsm_inhibitor_class_init (GsmInhibitorClass *klass)          dbus_g_object_type_install_info (GSM_TYPE_INHIBITOR, &dbus_glib_gsm_inhibitor_object_info);          dbus_g_error_domain_register (GSM_INHIBITOR_ERROR, NULL, GSM_INHIBITOR_TYPE_ERROR); -        g_type_class_add_private (klass, sizeof (GsmInhibitorPrivate));  }  GsmInhibitor * diff --git a/mate-session/gsm-inhibitor.h b/mate-session/gsm-inhibitor.h index 66aba28..653f717 100644 --- a/mate-session/gsm-inhibitor.h +++ b/mate-session/gsm-inhibitor.h @@ -24,32 +24,12 @@  #include <glib-object.h>  #include <sys/types.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_INHIBITOR            (gsm_inhibitor_get_type ()) -#define GSM_INHIBITOR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_INHIBITOR, GsmInhibitor)) -#define GSM_INHIBITOR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_INHIBITOR, GsmInhibitorClass)) -#define GSM_IS_INHIBITOR(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_INHIBITOR)) -#define GSM_IS_INHIBITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_INHIBITOR)) -#define GSM_INHIBITOR_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_INHIBITOR, GsmInhibitorClass)) - -typedef struct _GsmInhibitor        GsmInhibitor; -typedef struct _GsmInhibitorClass   GsmInhibitorClass; - -typedef struct GsmInhibitorPrivate GsmInhibitorPrivate; - -struct _GsmInhibitor -{ -        GObject              parent; -        GsmInhibitorPrivate *priv; -}; - -struct _GsmInhibitorClass -{ -        GObjectClass parent_class; -}; +#define GSM_INHIBITOR_ERROR           (gsm_inhibitor_error_quark ()) +#define GSM_INHIBITOR_TYPE_ERROR      (gsm_inhibitor_error_get_type ()) +G_DECLARE_FINAL_TYPE (GsmInhibitor, gsm_inhibitor, GSM, INHIBITOR, GObject)  typedef enum {          GSM_INHIBITOR_FLAG_LOGOUT      = 1 << 0, @@ -65,14 +45,10 @@ typedef enum          GSM_INHIBITOR_NUM_ERRORS  } GsmInhibitorError; -#define GSM_INHIBITOR_ERROR gsm_inhibitor_error_quark ()  GType          gsm_inhibitor_error_get_type       (void); -#define GSM_INHIBITOR_TYPE_ERROR (gsm_inhibitor_error_get_type ())  GQuark         gsm_inhibitor_error_quark          (void); -GType          gsm_inhibitor_get_type             (void) G_GNUC_CONST; -  GsmInhibitor * gsm_inhibitor_new                  (const char    *app_id,                                                     guint          toplevel_xid,                                                     guint          flags, @@ -112,9 +88,6 @@ gboolean       gsm_inhibitor_get_toplevel_xid     (GsmInhibitor  *inhibitor,                                                     guint         *xid,                                                     GError       **error); - -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_INHIBITOR_H__ */ diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c index 3183036..0b5741c 100644 --- a/mate-session/gsm-logout-dialog.c +++ b/mate-session/gsm-logout-dialog.c @@ -34,9 +34,6 @@  #include "gsm-consolekit.h"  #include "mdm.h" -#define GSM_LOGOUT_DIALOG_GET_PRIVATE(o)                                \ -        (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_LOGOUT_DIALOG, GsmLogoutDialogPrivate)) -  #define GSM_ICON_LOGOUT   "system-log-out"  #define GSM_ICON_SHUTDOWN "system-shutdown" @@ -51,8 +48,9 @@ typedef enum {          GSM_DIALOG_LOGOUT_TYPE_SHUTDOWN  } GsmDialogLogoutType; -struct _GsmLogoutDialogPrivate +struct _GsmLogoutDialog  { +        GtkMessageDialog     parent;          GsmDialogLogoutType  type;  #ifdef HAVE_SYSTEMD          GsmSystemd          *systemd; @@ -133,32 +131,28 @@ gsm_logout_dialog_class_init (GsmLogoutDialogClass *klass)          g_object_class_override_property (gobject_class,                                            PROP_MESSAGE_TYPE,                                            "message-type"); - -        g_type_class_add_private (klass, sizeof (GsmLogoutDialogPrivate));  }  static void  gsm_logout_dialog_init (GsmLogoutDialog *logout_dialog)  { -        logout_dialog->priv = GSM_LOGOUT_DIALOG_GET_PRIVATE (logout_dialog); - -        logout_dialog->priv->timeout_id = 0; -        logout_dialog->priv->timeout = 0; -        logout_dialog->priv->default_response = GTK_RESPONSE_CANCEL; +        logout_dialog->timeout_id = 0; +        logout_dialog->timeout = 0; +        logout_dialog->default_response = GTK_RESPONSE_CANCEL; -	GtkStyleContext *context; -	context = gtk_widget_get_style_context (GTK_WIDGET (logout_dialog)); -	gtk_style_context_add_class (context, "logout-dialog"); +        GtkStyleContext *context; +        context = gtk_widget_get_style_context (GTK_WIDGET (logout_dialog)); +        gtk_style_context_add_class (context, "logout-dialog");          gtk_window_set_skip_taskbar_hint (GTK_WINDOW (logout_dialog), TRUE);          gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE);          gtk_window_stick (GTK_WINDOW (logout_dialog));  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) -            logout_dialog->priv->systemd = gsm_get_systemd (); +            logout_dialog->systemd = gsm_get_systemd ();          else  #endif -        logout_dialog->priv->consolekit = gsm_get_consolekit (); +        logout_dialog->consolekit = gsm_get_consolekit ();          g_signal_connect (logout_dialog,                            "destroy", @@ -175,20 +169,20 @@ static void  gsm_logout_dialog_destroy (GsmLogoutDialog *logout_dialog,                             gpointer         data)  { -        if (logout_dialog->priv->timeout_id != 0) { -                g_source_remove (logout_dialog->priv->timeout_id); -                logout_dialog->priv->timeout_id = 0; +        if (logout_dialog->timeout_id != 0) { +                g_source_remove (logout_dialog->timeout_id); +                logout_dialog->timeout_id = 0;          }  #ifdef HAVE_SYSTEMD -        if (logout_dialog->priv->systemd) { -                g_object_unref (logout_dialog->priv->systemd); -                logout_dialog->priv->systemd = NULL; +        if (logout_dialog->systemd) { +                g_object_unref (logout_dialog->systemd); +                logout_dialog->systemd = NULL;          }  #endif -        if (logout_dialog->priv->consolekit) { -                g_object_unref (logout_dialog->priv->consolekit); -                logout_dialog->priv->consolekit = NULL; +        if (logout_dialog->consolekit) { +                g_object_unref (logout_dialog->consolekit); +                logout_dialog->consolekit = NULL;          }          current_dialog = NULL; @@ -201,10 +195,10 @@ gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog)          ret = FALSE;  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) -            ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); +            ret = gsm_systemd_can_suspend (logout_dialog->systemd);          else  #endif -        ret = gsm_consolekit_can_suspend (logout_dialog->priv->consolekit); +        ret = gsm_consolekit_can_suspend (logout_dialog->consolekit);          return ret;  } @@ -215,10 +209,10 @@ gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog)          ret = FALSE;  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) -            ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); +            ret = gsm_systemd_can_hibernate (logout_dialog->systemd);          else  #endif -        ret = gsm_consolekit_can_hibernate (logout_dialog->priv->consolekit); +        ret = gsm_consolekit_can_hibernate (logout_dialog->consolekit);          return ret;  } @@ -237,10 +231,10 @@ gsm_logout_supports_switch_user (GsmLogoutDialog *logout_dialog)          if (!locked) {  #ifdef HAVE_SYSTEMD              if (LOGIND_RUNNING()) -                ret = gsm_systemd_can_switch_user (logout_dialog->priv->systemd); +                ret = gsm_systemd_can_switch_user (logout_dialog->systemd);              else  #endif -            ret = gsm_consolekit_can_switch_user (logout_dialog->priv->consolekit); +            ret = gsm_consolekit_can_switch_user (logout_dialog->consolekit);          }          return ret; @@ -253,10 +247,10 @@ gsm_logout_supports_reboot (GsmLogoutDialog *logout_dialog)  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) -            ret = gsm_systemd_can_restart (logout_dialog->priv->systemd); +            ret = gsm_systemd_can_restart (logout_dialog->systemd);          else  #endif -        ret = gsm_consolekit_can_restart (logout_dialog->priv->consolekit); +        ret = gsm_consolekit_can_restart (logout_dialog->consolekit);          if (!ret) {                  ret = mdm_supports_logout_action (MDM_LOGOUT_ACTION_REBOOT);          } @@ -271,10 +265,10 @@ gsm_logout_supports_shutdown (GsmLogoutDialog *logout_dialog)  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) -            ret = gsm_systemd_can_stop (logout_dialog->priv->systemd); +            ret = gsm_systemd_can_stop (logout_dialog->systemd);          else  #endif -        ret = gsm_consolekit_can_stop (logout_dialog->priv->consolekit); +        ret = gsm_consolekit_can_stop (logout_dialog->consolekit);          if (!ret) {                  ret = mdm_supports_logout_action (MDM_LOGOUT_ACTION_SHUTDOWN); @@ -300,20 +294,20 @@ gsm_logout_dialog_timeout (gpointer data)          logout_dialog = (GsmLogoutDialog *) data; -        if (!logout_dialog->priv->timeout) { +        if (!logout_dialog->timeout) {                  gtk_dialog_response (GTK_DIALOG (logout_dialog), -                                     logout_dialog->priv->default_response); +                                     logout_dialog->default_response);                  return FALSE;          } -        switch (logout_dialog->priv->type) { +        switch (logout_dialog->type) {          case GSM_DIALOG_LOGOUT_TYPE_LOGOUT:                  seconds_warning = ngettext ("You will be automatically logged "                                              "out in %d second",                                              "You will be automatically logged "                                              "out in %d seconds", -                                            logout_dialog->priv->timeout); +                                            logout_dialog->timeout);                  break;          case GSM_DIALOG_LOGOUT_TYPE_SHUTDOWN: @@ -321,13 +315,13 @@ gsm_logout_dialog_timeout (gpointer data)                                              "shut down in %d second",                                              "This system will be automatically "                                              "shut down in %d seconds", -                                            logout_dialog->priv->timeout); +                                            logout_dialog->timeout);                  break;          default:                  g_assert_not_reached ();          } -        seconds_warning = g_strdup_printf (seconds_warning, logout_dialog->priv->timeout); +        seconds_warning = g_strdup_printf (seconds_warning, logout_dialog->timeout);          if (session_type == NULL) {  #ifdef HAVE_SYSTEMD @@ -370,16 +364,16 @@ gsm_logout_dialog_timeout (gpointer data)                  secondary_text = g_strdup (seconds_warning);          } -        gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), -                                       logout_dialog->priv->timeout / 60.0); -        gtk_progress_bar_set_text (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), +        gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (logout_dialog->progressbar), +                                       logout_dialog->timeout / 60.0); +        gtk_progress_bar_set_text (GTK_PROGRESS_BAR (logout_dialog->progressbar),                                     seconds_warning);          gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (logout_dialog),                                                    secondary_text,                                                    NULL); -        logout_dialog->priv->timeout--; +        logout_dialog->timeout--;          g_free (secondary_text);          g_free (seconds_warning); @@ -394,22 +388,22 @@ gsm_logout_dialog_set_timeout (GsmLogoutDialog *logout_dialog)          settings = g_settings_new (SESSION_SCHEMA); -        logout_dialog->priv->timeout = g_settings_get_int (settings, KEY_LOGOUT_TIMEOUT); +        logout_dialog->timeout = g_settings_get_int (settings, KEY_LOGOUT_TIMEOUT); -        if (logout_dialog->priv->timeout > 0) { +        if (logout_dialog->timeout > 0) {                  /* Sets the secondary text */                  gsm_logout_dialog_timeout (logout_dialog); -                if (logout_dialog->priv->timeout_id != 0) { -                        g_source_remove (logout_dialog->priv->timeout_id); +                if (logout_dialog->timeout_id != 0) { +                        g_source_remove (logout_dialog->timeout_id);                  } -                logout_dialog->priv->timeout_id = g_timeout_add (1000, -                                                                 gsm_logout_dialog_timeout, -                                                                 logout_dialog); +                logout_dialog->timeout_id = g_timeout_add (1000, +                                                           gsm_logout_dialog_timeout, +                                                           logout_dialog);          }          else { -                gtk_widget_hide (logout_dialog->priv->progressbar); +                gtk_widget_hide (logout_dialog->progressbar);          }          g_object_unref (settings); @@ -435,7 +429,7 @@ gsm_get_dialog (GsmDialogLogoutType type,          gtk_window_set_title (GTK_WINDOW (logout_dialog), ""); -        logout_dialog->priv->type = type; +        logout_dialog->type = type;          icon_name = NULL;          primary_text = NULL; @@ -445,7 +439,7 @@ gsm_get_dialog (GsmDialogLogoutType type,                  icon_name    = GSM_ICON_LOGOUT;                  primary_text = _("Log out of this system now?"); -                logout_dialog->priv->default_response = GSM_LOGOUT_RESPONSE_LOGOUT; +                logout_dialog->default_response = GSM_LOGOUT_RESPONSE_LOGOUT;                  if (gsm_logout_supports_switch_user (logout_dialog)) {                          gtk_dialog_add_button (GTK_DIALOG (logout_dialog), @@ -466,7 +460,7 @@ gsm_get_dialog (GsmDialogLogoutType type,                  icon_name    = GSM_ICON_SHUTDOWN;                  primary_text = _("Shut down this system now?"); -                logout_dialog->priv->default_response = GSM_LOGOUT_RESPONSE_SHUTDOWN; +                logout_dialog->default_response = GSM_LOGOUT_RESPONSE_SHUTDOWN;                  if (gsm_logout_supports_system_suspend (logout_dialog)) {                          gtk_dialog_add_button (GTK_DIALOG (logout_dialog), @@ -501,11 +495,11 @@ gsm_get_dialog (GsmDialogLogoutType type,          }          hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); -        logout_dialog->priv->progressbar = gtk_progress_bar_new (); -        gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), TRUE); -        gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), 1.0); +        logout_dialog->progressbar = gtk_progress_bar_new (); +        gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (logout_dialog->progressbar), TRUE); +        gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (logout_dialog->progressbar), 1.0);          gtk_box_pack_start (GTK_BOX (hbox), -                            logout_dialog->priv->progressbar, +                            logout_dialog->progressbar,                              TRUE, TRUE, 12);          gtk_widget_show_all (hbox);          gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (logout_dialog))), hbox); @@ -515,7 +509,7 @@ gsm_get_dialog (GsmDialogLogoutType type,          gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (logout_dialog), primary_text);          gtk_dialog_set_default_response (GTK_DIALOG (logout_dialog), -                                         logout_dialog->priv->default_response); +                                         logout_dialog->default_response);          gtk_window_set_screen (GTK_WINDOW (logout_dialog), screen); diff --git a/mate-session/gsm-logout-dialog.h b/mate-session/gsm-logout-dialog.h index dcde2cb..2166521 100644 --- a/mate-session/gsm-logout-dialog.h +++ b/mate-session/gsm-logout-dialog.h @@ -26,9 +26,10 @@  #include <gtk/gtk.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS + +#define GSM_TYPE_LOGOUT_DIALOG         (gsm_logout_dialog_get_type ()) +G_DECLARE_FINAL_TYPE (GsmLogoutDialog, gsm_logout_dialog, GSM, LOGOUT_DIALOG, GtkMessageDialog)  enum  { @@ -40,38 +41,11 @@ enum          GSM_LOGOUT_RESPONSE_SLEEP  }; -#define GSM_TYPE_LOGOUT_DIALOG         (gsm_logout_dialog_get_type ()) -#define GSM_LOGOUT_DIALOG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_LOGOUT_DIALOG, GsmLogoutDialog)) -#define GSM_LOGOUT_DIALOG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_LOGOUT_DIALOG, GsmLogoutDialogClass)) -#define GSM_IS_LOGOUT_DIALOG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_LOGOUT_DIALOG)) -#define GSM_IS_LOGOUT_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_LOGOUT_DIALOG)) -#define GSM_LOGOUT_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_LOGOUT_DIALOG, GsmLogoutDialogClass)) - -typedef struct _GsmLogoutDialog         GsmLogoutDialog; -typedef struct _GsmLogoutDialogClass    GsmLogoutDialogClass; -typedef struct _GsmLogoutDialogPrivate  GsmLogoutDialogPrivate; - -struct _GsmLogoutDialog -{ -        GtkMessageDialog        parent; - -        GsmLogoutDialogPrivate *priv; -}; - -struct _GsmLogoutDialogClass -{ -        GtkMessageDialogClass  parent_class; -}; - -GType        gsm_logout_dialog_get_type   (void) G_GNUC_CONST; -  GtkWidget   *gsm_get_logout_dialog        (GdkScreen           *screen,                                             guint32              activate_time);  GtkWidget   *gsm_get_shutdown_dialog      (GdkScreen           *screen,                                             guint32              activate_time); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_LOGOUT_DIALOG_H__ */ diff --git a/mate-session/gsm-store.c b/mate-session/gsm-store.c index 2d1721f..e715e73 100644 --- a/mate-session/gsm-store.c +++ b/mate-session/gsm-store.c @@ -32,13 +32,11 @@  #include "gsm-store.h" -#define GSM_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_STORE, GsmStorePrivate)) - -struct GsmStorePrivate +typedef struct  {          GHashTable *objects;          gboolean    locked; -}; +} GsmStorePrivate;  enum {          ADDED, @@ -57,7 +55,7 @@ static void     gsm_store_class_init    (GsmStoreClass *klass);  static void     gsm_store_init          (GsmStore      *store);  static void     gsm_store_finalize      (GObject       *object); -G_DEFINE_TYPE (GsmStore, gsm_store, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (GsmStore, gsm_store, G_TYPE_OBJECT)  GQuark  gsm_store_error_quark (void) @@ -73,7 +71,9 @@ gsm_store_error_quark (void)  guint  gsm_store_size (GsmStore    *store)  { -        return g_hash_table_size (store->priv->objects); +        GsmStorePrivate *priv; +        priv = gsm_store_get_instance_private (store); +        return g_hash_table_size (priv->objects);  }  gboolean @@ -83,10 +83,12 @@ gsm_store_remove (GsmStore   *store,          GObject *found;          gboolean removed;          char    *id_copy; +        GsmStorePrivate *priv;          g_return_val_if_fail (store != NULL, FALSE); -        found = g_hash_table_lookup (store->priv->objects, id); +        priv = gsm_store_get_instance_private (store); +        found = g_hash_table_lookup (priv->objects, id);          if (found == NULL) {                  return FALSE;          } @@ -95,7 +97,7 @@ gsm_store_remove (GsmStore   *store,          g_object_ref (found); -        removed = g_hash_table_remove (store->priv->objects, id_copy); +        removed = g_hash_table_remove (priv->objects, id_copy);          g_assert (removed);          g_signal_emit (store, signals [REMOVED], 0, id_copy); @@ -113,8 +115,10 @@ gsm_store_foreach (GsmStore    *store,  {          g_return_if_fail (store != NULL);          g_return_if_fail (func != NULL); +        GsmStorePrivate *priv; +        priv = gsm_store_get_instance_private (store); -        g_hash_table_find (store->priv->objects, +        g_hash_table_find (priv->objects,                             (GHRFunc)func,                             user_data);  } @@ -125,11 +129,13 @@ gsm_store_find (GsmStore    *store,                  gpointer     user_data)  {          GObject *object; +        GsmStorePrivate *priv;          g_return_val_if_fail (store != NULL, NULL);          g_return_val_if_fail (predicate != NULL, NULL); +        priv = gsm_store_get_instance_private (store); -        object = g_hash_table_find (store->priv->objects, +        object = g_hash_table_find (priv->objects,                                      (GHRFunc)predicate,                                      user_data);          return object; @@ -140,11 +146,13 @@ gsm_store_lookup (GsmStore   *store,                    const char *id)  {          GObject *object; +        GsmStorePrivate *priv;          g_return_val_if_fail (store != NULL, NULL);          g_return_val_if_fail (id != NULL, NULL); +        priv = gsm_store_get_instance_private (store); -        object = g_hash_table_lookup (store->priv->objects, id); +        object = g_hash_table_lookup (priv->objects, id);          return object;  } @@ -180,16 +188,18 @@ gsm_store_foreach_remove (GsmStore    *store,  {          guint       ret;          WrapperData data; +        GsmStorePrivate *priv;          g_return_val_if_fail (store != NULL, 0);          g_return_val_if_fail (func != NULL, 0); +        priv = gsm_store_get_instance_private (store);          data.store = store;          data.user_data = user_data;          data.func = func;          data.removed = NULL; -        ret = g_hash_table_foreach_remove (store->priv->objects, +        ret = g_hash_table_foreach_remove (priv->objects,                                             (GHRFunc)foreach_remove_wrapper,                                             &data); @@ -231,19 +241,22 @@ gsm_store_add (GsmStore   *store,                 const char *id,                 GObject    *object)  { +        GsmStorePrivate *priv;          g_return_val_if_fail (store != NULL, FALSE);          g_return_val_if_fail (id != NULL, FALSE);          g_return_val_if_fail (object != NULL, FALSE); +        priv = gsm_store_get_instance_private (store); +          /* If we're locked, we don't accept any new session             objects. */ -        if (store->priv->locked) { +        if (priv->locked) {                  return FALSE;          }          g_debug ("GsmStore: Adding object id %s to store", id); -        g_hash_table_insert (store->priv->objects, +        g_hash_table_insert (priv->objects,                               g_strdup (id),                               g_object_ref (object)); @@ -256,17 +269,21 @@ void  gsm_store_set_locked (GsmStore *store,                        gboolean  locked)  { +        GsmStorePrivate *priv;          g_return_if_fail (GSM_IS_STORE (store)); +        priv = gsm_store_get_instance_private (store); -        store->priv->locked = locked; +        priv->locked = locked;  }  gboolean  gsm_store_get_locked (GsmStore *store)  { +        GsmStorePrivate *priv;          g_return_val_if_fail (GSM_IS_STORE (store), FALSE); +        priv = gsm_store_get_instance_private (store); -        return store->priv->locked; +        return priv->locked;  }  static void @@ -296,12 +313,14 @@ gsm_store_get_property (GObject    *object,                          GParamSpec *pspec)  {          GsmStore *self; +        GsmStorePrivate *priv;          self = GSM_STORE (object); +        priv = gsm_store_get_instance_private (self);          switch (prop_id) {          case PROP_LOCKED: -                g_value_set_boolean (value, self->priv->locked); +                g_value_set_boolean (value, priv->locked);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -361,8 +380,6 @@ gsm_store_class_init (GsmStoreClass *klass)                                                                 NULL,                                                                 FALSE,                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - -        g_type_class_add_private (klass, sizeof (GsmStorePrivate));  }  static void @@ -375,28 +392,30 @@ _destroy_object (GObject *object)  static void  gsm_store_init (GsmStore *store)  { +        GsmStorePrivate *priv; +        priv = gsm_store_get_instance_private (store); -        store->priv = GSM_STORE_GET_PRIVATE (store); - -        store->priv->objects = g_hash_table_new_full (g_str_hash, -                                                      g_str_equal, -                                                      g_free, -                                                      (GDestroyNotify) _destroy_object); +        priv->objects = g_hash_table_new_full (g_str_hash, +                                               g_str_equal, +                                               g_free, +                                               (GDestroyNotify) _destroy_object);  }  static void  gsm_store_finalize (GObject *object)  {          GsmStore *store; +        GsmStorePrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSM_IS_STORE (object));          store = GSM_STORE (object); +        priv = gsm_store_get_instance_private (store); -        g_return_if_fail (store->priv != NULL); +        g_return_if_fail (priv != NULL); -        g_hash_table_destroy (store->priv->objects); +        g_hash_table_destroy (priv->objects);          G_OBJECT_CLASS (gsm_store_parent_class)->finalize (object);  } diff --git a/mate-session/gsm-store.h b/mate-session/gsm-store.h index c7b1c85..5a7f408 100644 --- a/mate-session/gsm-store.h +++ b/mate-session/gsm-store.h @@ -24,26 +24,12 @@  #include <glib-object.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_STORE         (gsm_store_get_type ()) -#define GSM_STORE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_STORE, GsmStore)) -#define GSM_STORE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_STORE, GsmStoreClass)) -#define GSM_IS_STORE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_STORE)) -#define GSM_IS_STORE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_STORE)) -#define GSM_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_STORE, GsmStoreClass)) +G_DECLARE_DERIVABLE_TYPE (GsmStore, gsm_store, GSM, STORE, GObject) -typedef struct GsmStorePrivate GsmStorePrivate; - -typedef struct -{ -        GObject          parent; -        GsmStorePrivate *priv; -} GsmStore; - -typedef struct +struct _GsmStoreClass  {          GObjectClass   parent_class; @@ -51,7 +37,7 @@ typedef struct                                      const char *id);          void          (* removed)  (GsmStore   *store,                                      const char *id); -} GsmStoreClass; +};  typedef enum  { @@ -65,7 +51,7 @@ typedef gboolean (*GsmStoreFunc) (const char *id,                                    gpointer    user_data);  GQuark              gsm_store_error_quark              (void); -GType               gsm_store_get_type                 (void); +GType               gsm_store_get_type                 (void) G_GNUC_CONST;  GsmStore *          gsm_store_new                      (void); @@ -93,9 +79,6 @@ GObject *           gsm_store_find                     (GsmStore    *store,  GObject *           gsm_store_lookup                   (GsmStore    *store,                                                          const char  *id); - -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_STORE_H */ diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c index 3ef6e48..5eafaed 100644 --- a/mate-session/gsm-systemd.c +++ b/mate-session/gsm-systemd.c @@ -44,16 +44,13 @@  #define SD_SEAT_INTERFACE    "org.freedesktop.login1.Seat"  #define SD_SESSION_INTERFACE "org.freedesktop.login1.Session" -#define GSM_SYSTEMD_GET_PRIVATE(o)                                   \ -        (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_SYSTEMD, GsmSystemdPrivate)) - -struct _GsmSystemdPrivate +typedef struct  {      DBusGConnection *dbus_connection;      DBusGProxy      *bus_proxy;      DBusGProxy      *sd_proxy;      guint32          is_connected : 1; -}; +} GsmSystemdPrivate;  enum {      PROP_0, @@ -84,7 +81,7 @@ static void     gsm_systemd_on_name_owner_changed (DBusGProxy       *bus_proxy,                                                     const char       *new_owner,                                                     GsmSystemd       *manager); -G_DEFINE_TYPE (GsmSystemd, gsm_systemd, G_TYPE_OBJECT); +G_DEFINE_TYPE_WITH_PRIVATE (GsmSystemd, gsm_systemd, G_TYPE_OBJECT);  static void  gsm_systemd_get_property (GObject    *object, @@ -92,12 +89,15 @@ gsm_systemd_get_property (GObject    *object,                            GValue     *value,                            GParamSpec *pspec)  { +    GsmSystemdPrivate *priv;      GsmSystemd *manager = GSM_SYSTEMD (object); +    priv = gsm_systemd_get_instance_private (manager); +      switch (prop_id) {      case PROP_IS_CONNECTED:          g_value_set_boolean (value, -                             manager->priv->is_connected); +                             priv->is_connected);          break;          default: @@ -148,8 +148,6 @@ gsm_systemd_class_init (GsmSystemdClass *manager_class)                            gsm_marshal_VOID__BOOLEAN_BOOLEAN_POINTER,                            G_TYPE_NONE,                            3, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_POINTER); - -    g_type_class_add_private (manager_class, sizeof (GsmSystemdPrivate));  }  static DBusHandlerResult @@ -177,64 +175,67 @@ gsm_systemd_ensure_sd_connection (GsmSystemd  *manager,  {      GError  *connection_error;      gboolean is_connected; +    GsmSystemdPrivate *priv;      connection_error = NULL; -    if (manager->priv->dbus_connection == NULL) { +    priv = gsm_systemd_get_instance_private (manager); + +    if (priv->dbus_connection == NULL) {          DBusConnection *connection; -        manager->priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, -                                                         &connection_error); +        priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, +                                                &connection_error); -        if (manager->priv->dbus_connection == NULL) { +        if (priv->dbus_connection == NULL) {              g_propagate_error (error, connection_error);              is_connected = FALSE;              goto out;          } -        connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); +        connection = dbus_g_connection_get_connection (priv->dbus_connection);          dbus_connection_set_exit_on_disconnect (connection, FALSE);          dbus_connection_add_filter (connection,                                      gsm_systemd_dbus_filter,                                      manager, NULL);      } -    if (manager->priv->bus_proxy == NULL) { -        manager->priv->bus_proxy = -            dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection, +    if (priv->bus_proxy == NULL) { +        priv->bus_proxy = +            dbus_g_proxy_new_for_name_owner (priv->dbus_connection,                                               DBUS_SERVICE_DBUS,                                               DBUS_PATH_DBUS,                                               DBUS_INTERFACE_DBUS,                                               &connection_error); -        if (manager->priv->bus_proxy == NULL) { +        if (priv->bus_proxy == NULL) {              g_propagate_error (error, connection_error);              is_connected = FALSE;              goto out;          } -        dbus_g_proxy_add_signal (manager->priv->bus_proxy, +        dbus_g_proxy_add_signal (priv->bus_proxy,                                   "NameOwnerChanged",                                   G_TYPE_STRING,                                   G_TYPE_STRING,                                   G_TYPE_STRING,                                   G_TYPE_INVALID); -        dbus_g_proxy_connect_signal (manager->priv->bus_proxy, +        dbus_g_proxy_connect_signal (priv->bus_proxy,                                       "NameOwnerChanged",                                       G_CALLBACK (gsm_systemd_on_name_owner_changed),                                       manager, NULL);      } -    if (manager->priv->sd_proxy == NULL) { -        manager->priv->sd_proxy = -                dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection, +    if (priv->sd_proxy == NULL) { +        priv->sd_proxy = +                dbus_g_proxy_new_for_name_owner (priv->dbus_connection,                                                   SD_NAME,                                                   SD_PATH,                                                   SD_INTERFACE,                                                   &connection_error); -        if (manager->priv->sd_proxy == NULL) { +        if (priv->sd_proxy == NULL) {              g_propagate_error (error, connection_error);              is_connected = FALSE;              goto out; @@ -244,26 +245,26 @@ gsm_systemd_ensure_sd_connection (GsmSystemd  *manager,      is_connected = TRUE;  out: -    if (manager->priv->is_connected != is_connected) { -        manager->priv->is_connected = is_connected; +    if (priv->is_connected != is_connected) { +        priv->is_connected = is_connected;          g_object_notify (G_OBJECT (manager), "is-connected");      }      if (!is_connected) { -        if (manager->priv->dbus_connection == NULL) { -            if (manager->priv->bus_proxy != NULL) { -                g_object_unref (manager->priv->bus_proxy); -                manager->priv->bus_proxy = NULL; +        if (priv->dbus_connection == NULL) { +            if (priv->bus_proxy != NULL) { +                g_object_unref (priv->bus_proxy); +                priv->bus_proxy = NULL;              } -            if (manager->priv->sd_proxy != NULL) { -                g_object_unref (manager->priv->sd_proxy); -                manager->priv->sd_proxy = NULL; +            if (priv->sd_proxy != NULL) { +                g_object_unref (priv->sd_proxy); +                priv->sd_proxy = NULL;              } -        } else if (manager->priv->bus_proxy == NULL) { -            if (manager->priv->sd_proxy != NULL) { -                g_object_unref (manager->priv->sd_proxy); -                manager->priv->sd_proxy = NULL; +        } else if (priv->bus_proxy == NULL) { +            if (priv->sd_proxy != NULL) { +                g_object_unref (priv->sd_proxy); +                priv->sd_proxy = NULL;              }          }      } @@ -278,13 +279,16 @@ gsm_systemd_on_name_owner_changed (DBusGProxy    *bus_proxy,                                     const char    *new_owner,                                     GsmSystemd    *manager)  { +    GsmSystemdPrivate *priv; + +    priv = gsm_systemd_get_instance_private (manager);      if (name != NULL && g_strcmp0 (name, SD_NAME) != 0) {          return;      } -    if (manager->priv->sd_proxy != NULL) { -        g_object_unref (manager->priv->sd_proxy); -        manager->priv->sd_proxy = NULL; +    if (priv->sd_proxy != NULL) { +        g_object_unref (priv->sd_proxy); +        priv->sd_proxy = NULL;      }      gsm_systemd_ensure_sd_connection (manager, NULL); @@ -295,8 +299,6 @@ gsm_systemd_init (GsmSystemd *manager)  {      GError *error; -    manager->priv = GSM_SYSTEMD_GET_PRIVATE (manager); -      error = NULL;      if (!gsm_systemd_ensure_sd_connection (manager, &error)) { @@ -309,25 +311,28 @@ gsm_systemd_init (GsmSystemd *manager)  static void  gsm_systemd_free_dbus (GsmSystemd *manager)  { -    if (manager->priv->bus_proxy != NULL) { -        g_object_unref (manager->priv->bus_proxy); -        manager->priv->bus_proxy = NULL; +    GsmSystemdPrivate *priv; + +    priv = gsm_systemd_get_instance_private (manager); +    if (priv->bus_proxy != NULL) { +        g_object_unref (priv->bus_proxy); +        priv->bus_proxy = NULL;      } -    if (manager->priv->sd_proxy != NULL) { -        g_object_unref (manager->priv->sd_proxy); -        manager->priv->sd_proxy = NULL; +    if (priv->sd_proxy != NULL) { +        g_object_unref (priv->sd_proxy); +        priv->sd_proxy = NULL;      } -    if (manager->priv->dbus_connection != NULL) { +    if (priv->dbus_connection != NULL) {          DBusConnection *connection; -        connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); +        connection = dbus_g_connection_get_connection (priv->dbus_connection);          dbus_connection_remove_filter (connection,                                         gsm_systemd_dbus_filter,                                         manager); -        dbus_g_connection_unref (manager->priv->dbus_connection); -        manager->priv->dbus_connection = NULL; +        dbus_g_connection_unref (priv->dbus_connection); +        priv->dbus_connection = NULL;      }  } @@ -421,8 +426,10 @@ gsm_systemd_attempt_restart (GsmSystemd *manager)  {      gboolean res;      GError  *error; +    GsmSystemdPrivate *priv;      error = NULL; +    priv = gsm_systemd_get_instance_private (manager);      if (!gsm_systemd_ensure_sd_connection (manager, &error)) {          g_warning ("Could not connect to Systemd: %s", @@ -432,7 +439,7 @@ gsm_systemd_attempt_restart (GsmSystemd *manager)          return;      } -    res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, +    res = dbus_g_proxy_call_with_timeout (priv->sd_proxy,                                            "Reboot",                                            INT_MAX,                                            &error, @@ -454,8 +461,10 @@ gsm_systemd_attempt_stop (GsmSystemd *manager)  {      gboolean res;      GError  *error; +    GsmSystemdPrivate *priv;      error = NULL; +    priv = gsm_systemd_get_instance_private (manager);      if (!gsm_systemd_ensure_sd_connection (manager, &error)) {          g_warning ("Could not connect to Systemd: %s", @@ -465,7 +474,7 @@ gsm_systemd_attempt_stop (GsmSystemd *manager)          return;      } -    res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, +    res = dbus_g_proxy_call_with_timeout (priv->sd_proxy,                                            "PowerOff",                                            INT_MAX,                                            &error, @@ -552,8 +561,10 @@ gsm_systemd_set_session_idle (GsmSystemd *manager,      DBusMessage    *reply;      DBusError       dbus_error;      DBusMessageIter iter; +    GsmSystemdPrivate *priv;      error = NULL; +    priv = gsm_systemd_get_instance_private (manager);      if (!gsm_systemd_ensure_sd_connection (manager, &error)) {          g_warning ("Could not connect to Systemd: %s", @@ -562,7 +573,7 @@ gsm_systemd_set_session_idle (GsmSystemd *manager,          return;      } -    gsm_systemd_get_session_path (dbus_g_connection_get_connection (manager->priv->dbus_connection), &session_path); +    gsm_systemd_get_session_path (dbus_g_connection_get_connection (priv->dbus_connection), &session_path);      g_return_if_fail (session_path != NULL); @@ -581,7 +592,7 @@ gsm_systemd_set_session_idle (GsmSystemd *manager,      /* FIXME: use async? */      dbus_error_init (&dbus_error); -    reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (manager->priv->dbus_connection), +    reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (priv->dbus_connection),                                                         message,                                                         -1,                                                         &dbus_error); @@ -638,8 +649,8 @@ gboolean  gsm_systemd_get_restart_privileges (GsmSystemd *manager)  {      g_signal_emit (G_OBJECT (manager), -               signals [PRIVILEGES_COMPLETED], -               0, TRUE, TRUE, NULL); +                   signals [PRIVILEGES_COMPLETED], +                   0, TRUE, TRUE, NULL);      return TRUE;  } @@ -648,8 +659,8 @@ gboolean  gsm_systemd_get_stop_privileges (GsmSystemd *manager)  {      g_signal_emit (G_OBJECT (manager), -               signals [PRIVILEGES_COMPLETED], -               0, TRUE, TRUE, NULL); +                   signals [PRIVILEGES_COMPLETED], +                   0, TRUE, TRUE, NULL);      return TRUE;  } @@ -661,8 +672,10 @@ gsm_systemd_can_restart (GsmSystemd *manager)      gchar   *value;      gboolean can_restart;      GError  *error; +    GsmSystemdPrivate *priv;      error = NULL; +    priv = gsm_systemd_get_instance_private (manager);      if (!gsm_systemd_ensure_sd_connection (manager, &error)) {          g_warning ("Could not connect to Systemd: %s", @@ -671,7 +684,7 @@ gsm_systemd_can_restart (GsmSystemd *manager)          return FALSE;      } -    res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, +    res = dbus_g_proxy_call_with_timeout (priv->sd_proxy,                                            "CanReboot",                                            INT_MAX,                                            &error, @@ -698,8 +711,10 @@ gsm_systemd_can_stop (GsmSystemd *manager)      gchar   *value;      gboolean can_stop;      GError  *error; +    GsmSystemdPrivate *priv;      error = NULL; +    priv = gsm_systemd_get_instance_private (manager);      if (!gsm_systemd_ensure_sd_connection (manager, &error)) {          g_warning ("Could not connect to Systemd: %s", @@ -708,7 +723,7 @@ gsm_systemd_can_stop (GsmSystemd *manager)          return FALSE;      } -    res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, +    res = dbus_g_proxy_call_with_timeout (priv->sd_proxy,                                            "CanPowerOff",                                            INT_MAX,                                            &error, @@ -736,26 +751,28 @@ gsm_systemd_can_hibernate (GsmSystemd *manager)    gchar   *value;    gboolean can_hibernate;    GError  *error; +  GsmSystemdPrivate *priv;    error = NULL; +  priv = gsm_systemd_get_instance_private (manager);    if (!gsm_systemd_ensure_sd_connection (manager, &error)) {      g_warning ("Could not connect to Systemd: %s", -	       error->message); +               error->message);      g_error_free (error);      return FALSE;    } -  res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -					"CanHibernate", -					INT_MAX, -					&error, -					G_TYPE_INVALID, -					G_TYPE_STRING, &value, -					G_TYPE_INVALID); +  res = dbus_g_proxy_call_with_timeout (priv->sd_proxy, +                                        "CanHibernate", +                                        INT_MAX, +                                        &error, +                                        G_TYPE_INVALID, +                                        G_TYPE_STRING, &value, +                                        G_TYPE_INVALID);    if (res == FALSE) {      g_warning ("Could not make DBUS call: %s", -	       error->message); +               error->message);      g_error_free (error);      return FALSE;    } @@ -773,26 +790,28 @@ gsm_systemd_can_suspend (GsmSystemd *manager)    gchar   *value;    gboolean can_suspend;    GError  *error; +  GsmSystemdPrivate *priv;    error = NULL; +  priv = gsm_systemd_get_instance_private (manager);    if (!gsm_systemd_ensure_sd_connection (manager, &error)) {      g_warning ("Could not connect to Systemd: %s", -	       error->message); +               error->message);      g_error_free (error);      return FALSE;    } -  res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -					"CanSuspend", -					INT_MAX, -					&error, -					G_TYPE_INVALID, -					G_TYPE_STRING, &value, -					G_TYPE_INVALID); +  res = dbus_g_proxy_call_with_timeout (priv->sd_proxy, +                                        "CanSuspend", +                                        INT_MAX, +                                        &error, +                                        G_TYPE_INVALID, +                                        G_TYPE_STRING, &value, +                                        G_TYPE_INVALID);    if (res == FALSE) {      g_warning ("Could not make DBUS call: %s", -	       error->message); +               error->message);      g_error_free (error);      return FALSE;    } @@ -808,26 +827,28 @@ gsm_systemd_attempt_hibernate (GsmSystemd *manager)  {    gboolean res;    GError  *error; +  GsmSystemdPrivate *priv;    error = NULL; +  priv = gsm_systemd_get_instance_private (manager);    if (!gsm_systemd_ensure_sd_connection (manager, &error)) {      g_warning ("Could not connect to Systemd: %s", -	       error->message); +               error->message);      g_error_free (error);      return;    } -  res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -					"Hibernate", -					INT_MAX, -					&error, +  res = dbus_g_proxy_call_with_timeout (priv->sd_proxy, +                                        "Hibernate", +                                        INT_MAX, +                                        &error,                                          G_TYPE_BOOLEAN, TRUE, /* interactive */ -					G_TYPE_INVALID, -					G_TYPE_INVALID); +                                        G_TYPE_INVALID, +                                        G_TYPE_INVALID);    if (res == FALSE) {      g_warning ("Could not make DBUS call: %s", -	       error->message); +               error->message);      g_error_free (error);      return;    } @@ -839,26 +860,28 @@ gsm_systemd_attempt_suspend (GsmSystemd *manager)  {    gboolean res;    GError  *error; +  GsmSystemdPrivate *priv;    error = NULL; +  priv = gsm_systemd_get_instance_private (manager);    if (!gsm_systemd_ensure_sd_connection (manager, &error)) {      g_warning ("Could not connect to Systemd: %s", -	       error->message); +               error->message);      g_error_free (error);      return;    } -  res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -					"Suspend", -					INT_MAX, -					&error, +  res = dbus_g_proxy_call_with_timeout (priv->sd_proxy, +                                        "Suspend", +                                        INT_MAX, +                                        &error,                                          G_TYPE_BOOLEAN, TRUE, /* interactive */                                          G_TYPE_INVALID, -					G_TYPE_INVALID); +                                        G_TYPE_INVALID);    if (res == FALSE) {      g_warning ("Could not make DBUS call: %s", -	       error->message); +               error->message);      g_error_free (error);      return;    } diff --git a/mate-session/gsm-systemd.h b/mate-session/gsm-systemd.h index e0e21c4..5d6b654 100644 --- a/mate-session/gsm-systemd.h +++ b/mate-session/gsm-systemd.h @@ -27,32 +27,15 @@  #include <glib.h>  #include <glib-object.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_SYSTEMD             (gsm_systemd_get_type ()) -#define GSM_SYSTEMD(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_SYSTEMD, GsmSystemd)) -#define GSM_SYSTEMD_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_SYSTEMD, GsmSystemdClass)) -#define GSM_IS_SYSTEMD(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_SYSTEMD)) -#define GSM_IS_SYSTEMD_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_SYSTEMD)) -#define GSM_SYSTEMD_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), GSM_TYPE_SYSTEMD, GsmSystemdClass))  #define GSM_SYSTEMD_ERROR            (gsm_systemd_error_quark ()) +G_DECLARE_DERIVABLE_TYPE (GsmSystemd, gsm_systemd, GSM, SYSTEMD, GObject)  #define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0) - -typedef struct _GsmSystemd        GsmSystemd; -typedef struct _GsmSystemdClass   GsmSystemdClass; -typedef struct _GsmSystemdPrivate GsmSystemdPrivate;  typedef enum   _GsmSystemdError   GsmSystemdError; -struct _GsmSystemd -{ -        GObject               parent; - -        GsmSystemdPrivate *priv; -}; -  struct _GsmSystemdClass  {          GObjectClass parent_class; @@ -73,7 +56,7 @@ enum _GsmSystemdError {  #define GSM_SYSTEMD_SESSION_TYPE_LOGIN_WINDOW "greeter" -GType            gsm_systemd_get_type        (void); +GType            gsm_systemd_get_type        (void) G_GNUC_CONST;  GQuark           gsm_systemd_error_quark     (void); @@ -108,8 +91,6 @@ gchar           *gsm_systemd_get_current_session_type (GsmSystemd *manager);  GsmSystemd      *gsm_get_systemd             (void); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_SYSTEMD_H__ */ diff --git a/mate-session/gsm-xsmp-client.c b/mate-session/gsm-xsmp-client.c index 9c61497..5e15744 100644 --- a/mate-session/gsm-xsmp-client.c +++ b/mate-session/gsm-xsmp-client.c @@ -40,11 +40,8 @@  #define GsmDesktopFile "_GSM_DesktopFile" -#define GSM_XSMP_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_XSMP_CLIENT, GsmXSMPClientPrivate)) - -struct GsmXSMPClientPrivate -{ - +typedef struct { +        GsmClient  parent;          SmsConn    conn;          IceConn    ice_connection; @@ -57,7 +54,7 @@ struct GsmXSMPClientPrivate          int        current_save_yourself;          int        next_save_yourself;          guint      next_save_yourself_allow_interact : 1; -}; +} GsmXSMPClientPrivate;  enum {          PROP_0, @@ -72,7 +69,7 @@ enum {  static guint signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_TYPE (GsmXSMPClient, gsm_xsmp_client, GSM_TYPE_CLIENT) +G_DEFINE_TYPE_WITH_PRIVATE (GsmXSMPClient, gsm_xsmp_client, GSM_TYPE_CLIENT)  static gboolean  client_iochannel_watch (GIOChannel    *channel, @@ -80,15 +77,18 @@ client_iochannel_watch (GIOChannel    *channel,                          GsmXSMPClient *client)  {          gboolean keep_going; +        GsmXSMPClientPrivate *priv;          g_object_ref (client); -        switch (IceProcessMessages (client->priv->ice_connection, NULL, NULL)) { +        priv = gsm_xsmp_client_get_instance_private (client); + +        switch (IceProcessMessages (priv->ice_connection, NULL, NULL)) {          case IceProcessMessagesSuccess:                  keep_going = TRUE;                  break;          case IceProcessMessagesIOError: -                g_debug ("GsmXSMPClient: IceProcessMessagesIOError on '%s'", client->priv->description); +                g_debug ("GsmXSMPClient: IceProcessMessagesIOError on '%s'", priv->description);                  gsm_client_set_status (GSM_CLIENT (client), GSM_CLIENT_FAILED);                  /* Emitting "disconnected" will eventually cause                   * IceCloseConnection() to be called. @@ -99,8 +99,8 @@ client_iochannel_watch (GIOChannel    *channel,          case IceProcessMessagesConnectionClosed:                  g_debug ("GsmXSMPClient: IceProcessMessagesConnectionClosed on '%s'", -                         client->priv->description); -                client->priv->ice_connection = NULL; +                         priv->description); +                priv->ice_connection = NULL;                  keep_going = FALSE;                  break; @@ -119,9 +119,12 @@ find_property (GsmXSMPClient *client,  {          SmProp *prop;          int i; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (client); -        for (i = 0; i < client->priv->props->len; i++) { -                prop = client->priv->props->pdata[i]; +        for (i = 0; i < priv->props->len; i++) { +                prop = priv->props->pdata[i];                  if (!strcmp (prop->name, name)) {                          if (index) { @@ -139,21 +142,23 @@ set_description (GsmXSMPClient *client)  {          SmProp     *prop;          const char *id; +        GsmXSMPClientPrivate *priv; +        priv = gsm_xsmp_client_get_instance_private (client);          prop = find_property (client, SmProgram, NULL);          id = gsm_client_peek_startup_id (GSM_CLIENT (client)); -        g_free (client->priv->description); +        g_free (priv->description);          if (prop) { -                client->priv->description = g_strdup_printf ("%p [%.*s %s]", -                                                             client, -                                                             prop->vals[0].length, -                                                             (char *)prop->vals[0].value, -                                                             id); +                priv->description = g_strdup_printf ("%p [%.*s %s]", +                                                     client, +                                                     prop->vals[0].length, +                                                     (char *)prop->vals[0].value, +                                                     id);          } else if (id != NULL) { -                client->priv->description = g_strdup_printf ("%p [%s]", client, id); +                priv->description = g_strdup_printf ("%p [%s]", client, id);          } else { -                client->priv->description = g_strdup_printf ("%p", client); +                priv->description = g_strdup_printf ("%p", client);          }  } @@ -162,21 +167,23 @@ setup_connection (GsmXSMPClient *client)  {          GIOChannel    *channel;          int            fd; +        GsmXSMPClientPrivate *priv; +        priv = gsm_xsmp_client_get_instance_private (client);          g_debug ("GsmXSMPClient: Setting up new connection"); -        fd = IceConnectionNumber (client->priv->ice_connection); +        fd = IceConnectionNumber (priv->ice_connection);          fcntl (fd, F_SETFD, fcntl (fd, F_GETFD, 0) | FD_CLOEXEC);          channel = g_io_channel_unix_new (fd); -        client->priv->watch_id = g_io_add_watch (channel, -                                                 G_IO_IN | G_IO_ERR, -                                                 (GIOFunc)client_iochannel_watch, -                                                 client); +        priv->watch_id = g_io_add_watch (channel, +                                         G_IO_IN | G_IO_ERR, +                                         (GIOFunc)client_iochannel_watch, +                                         client);          g_io_channel_unref (channel);          set_description (client); -        g_debug ("GsmXSMPClient: New client '%s'", client->priv->description); +        g_debug ("GsmXSMPClient: New client '%s'", priv->description);  }  static GObject * @@ -197,12 +204,14 @@ gsm_xsmp_client_constructor (GType                  type,  static void  gsm_xsmp_client_init (GsmXSMPClient *client)  { -        client->priv = GSM_XSMP_CLIENT_GET_PRIVATE (client); +        GsmXSMPClientPrivate *priv; -        client->priv->props = g_ptr_array_new (); -        client->priv->current_save_yourself = -1; -        client->priv->next_save_yourself = -1; -        client->priv->next_save_yourself_allow_interact = FALSE; +        priv = gsm_xsmp_client_get_instance_private (client); + +        priv->props = g_ptr_array_new (); +        priv->current_save_yourself = -1; +        priv->next_save_yourself = -1; +        priv->next_save_yourself_allow_interact = FALSE;  } @@ -212,6 +221,9 @@ delete_property (GsmXSMPClient *client,  {          int     index;          SmProp *prop; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (client);          prop = find_property (client, name, &index);          if (!prop) { @@ -231,7 +243,7 @@ delete_property (GsmXSMPClient *client,          }  #endif -        g_ptr_array_remove_index_fast (client->priv->props, index); +        g_ptr_array_remove_index_fast (priv->props, index);          SmFreeProperty (prop);  } @@ -274,14 +286,17 @@ set_properties_callback (SmsConn     conn,                           int         num_props,                           SmProp    **props)  { -        GsmXSMPClient *client = manager_data;          int            i; +        GsmXSMPClientPrivate *priv; +        GsmXSMPClient *client = manager_data; + +        priv = gsm_xsmp_client_get_instance_private (client); -        g_debug ("GsmXSMPClient: Set properties from client '%s'", client->priv->description); +        g_debug ("GsmXSMPClient: Set properties from client '%s'", priv->description);          for (i = 0; i < num_props; i++) {                  delete_property (client, props[i]->name); -                g_ptr_array_add (client->priv->props, props[i]); +                g_ptr_array_add (priv->props, props[i]);                  debug_print_property (props[i]); @@ -299,10 +314,13 @@ delete_properties_callback (SmsConn     conn,                              int         num_props,                              char      **prop_names)  { -        GsmXSMPClient *client = manager_data;          int i; +        GsmXSMPClientPrivate *priv; +        GsmXSMPClient *client = manager_data; + +        priv = gsm_xsmp_client_get_instance_private (client); -        g_debug ("GsmXSMPClient: Delete properties from '%s'", client->priv->description); +        g_debug ("GsmXSMPClient: Delete properties from '%s'", priv->description);          for (i = 0; i < num_props; i++) {                  delete_property (client, prop_names[i]); @@ -317,13 +335,16 @@ static void  get_properties_callback (SmsConn   conn,                           SmPointer manager_data)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; -        g_debug ("GsmXSMPClient: Get properties request from '%s'", client->priv->description); +        priv = gsm_xsmp_client_get_instance_private (client); + +        g_debug ("GsmXSMPClient: Get properties request from '%s'", priv->description);          SmsReturnProperties (conn, -                             client->priv->props->len, -                             (SmProp **)client->priv->props->pdata); +                             priv->props->len, +                             (SmProp **)priv->props->pdata);  }  static char * @@ -404,30 +425,33 @@ do_save_yourself (GsmXSMPClient *client,                    int            save_type,                    gboolean       allow_interact)  { -        g_assert (client->priv->conn != NULL); +        GsmXSMPClientPrivate *priv; -        if (client->priv->next_save_yourself != -1) { +        priv = gsm_xsmp_client_get_instance_private (client); +        g_assert (priv->conn != NULL); + +        if (priv->next_save_yourself != -1) {                  /* Either we're currently doing a shutdown and there's a checkpoint                   * queued after it, or vice versa. Either way, the new SaveYourself                   * is redundant.                   */                  g_debug ("GsmXSMPClient:   skipping redundant SaveYourself for '%s'", -                         client->priv->description); -        } else if (client->priv->current_save_yourself != -1) { +                         priv->description); +        } else if (priv->current_save_yourself != -1) {                  g_debug ("GsmXSMPClient:   queuing new SaveYourself for '%s'", -                         client->priv->description); -                client->priv->next_save_yourself = save_type; -                client->priv->next_save_yourself_allow_interact = allow_interact; +                         priv->description); +                priv->next_save_yourself = save_type; +                priv->next_save_yourself_allow_interact = allow_interact;          } else { -                client->priv->current_save_yourself = save_type; +                priv->current_save_yourself = save_type;                  /* make sure we don't have anything queued */ -                client->priv->next_save_yourself = -1; -                client->priv->next_save_yourself_allow_interact = FALSE; +                priv->next_save_yourself = -1; +                priv->next_save_yourself_allow_interact = FALSE;                  switch (save_type) {                  case SmSaveLocal:                          /* Save state */ -                        SmsSaveYourself (client->priv->conn, +                        SmsSaveYourself (priv->conn,                                           SmSaveLocal,                                           FALSE,                                           SmInteractStyleNone, @@ -437,13 +461,13 @@ do_save_yourself (GsmXSMPClient *client,                  default:                          /* Logout */                          if (!allow_interact) { -                                SmsSaveYourself (client->priv->conn, +                                SmsSaveYourself (priv->conn,                                                   save_type, /* save type */                                                   TRUE, /* shutdown */                                                   SmInteractStyleNone, /* interact style */                                                   TRUE); /* fast */                          } else { -                                SmsSaveYourself (client->priv->conn, +                                SmsSaveYourself (priv->conn,                                                   save_type, /* save type */                                                   TRUE, /* shutdown */                                                   SmInteractStyleAny, /* interact style */ @@ -457,32 +481,38 @@ do_save_yourself (GsmXSMPClient *client,  static void  xsmp_save_yourself_phase2 (GsmClient *client)  { -        GsmXSMPClient *xsmp = (GsmXSMPClient *) client; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); -        g_debug ("GsmXSMPClient: xsmp_save_yourself_phase2 ('%s')", xsmp->priv->description); +        g_debug ("GsmXSMPClient: xsmp_save_yourself_phase2 ('%s')", priv->description); -        SmsSaveYourselfPhase2 (xsmp->priv->conn); +        SmsSaveYourselfPhase2 (priv->conn);  }  static void  xsmp_interact (GsmClient *client)  { -        GsmXSMPClient *xsmp = (GsmXSMPClient *) client; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); -        g_debug ("GsmXSMPClient: xsmp_interact ('%s')", xsmp->priv->description); +        g_debug ("GsmXSMPClient: xsmp_interact ('%s')", priv->description); -        SmsInteract (xsmp->priv->conn); +        SmsInteract (priv->conn);  }  static gboolean  xsmp_cancel_end_session (GsmClient *client,                           GError   **error)  { -        GsmXSMPClient *xsmp = (GsmXSMPClient *) client; +        GsmXSMPClientPrivate *priv; -        g_debug ("GsmXSMPClient: xsmp_cancel_end_session ('%s')", xsmp->priv->description); +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); -        if (xsmp->priv->conn == NULL) { +        g_debug ("GsmXSMPClient: xsmp_cancel_end_session ('%s')", priv->description); + +        if (priv->conn == NULL) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -490,12 +520,12 @@ xsmp_cancel_end_session (GsmClient *client,                  return FALSE;          } -        SmsShutdownCancelled (xsmp->priv->conn); +        SmsShutdownCancelled (priv->conn);          /* reset the state */ -        xsmp->priv->current_save_yourself = -1; -        xsmp->priv->next_save_yourself = -1; -        xsmp->priv->next_save_yourself_allow_interact = FALSE; +        priv->current_save_yourself = -1; +        priv->next_save_yourself = -1; +        priv->next_save_yourself_allow_interact = FALSE;          return TRUE;  } @@ -523,9 +553,9 @@ get_desktop_file_path (GsmXSMPClient *client)           * try to find the desktop file from its program name */          prop = find_property (client, SmProgram, NULL); -	if (!prop) { -	        goto out; -	} +        if (!prop) { +                goto out; +        }          program_name = prop->vals[0].value; @@ -563,7 +593,7 @@ set_desktop_file_keys_from_client (GsmClient *client,               * properties. But it could still be that SmProgram is not set.               */              name = _("Remembered Application"); -	} +        }          comment = g_strdup_printf ("Client %s which was automatically saved",                                     gsm_client_peek_startup_id (client)); @@ -700,11 +730,13 @@ static gboolean  xsmp_stop (GsmClient *client,             GError   **error)  { -        GsmXSMPClient *xsmp = (GsmXSMPClient *) client; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); -        g_debug ("GsmXSMPClient: xsmp_stop ('%s')", xsmp->priv->description); +        g_debug ("GsmXSMPClient: xsmp_stop ('%s')", priv->description); -        if (xsmp->priv->conn == NULL) { +        if (priv->conn == NULL) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -712,7 +744,7 @@ xsmp_stop (GsmClient *client,                  return FALSE;          } -        SmsDie (xsmp->priv->conn); +        SmsDie (priv->conn);          return TRUE;  } @@ -724,8 +756,11 @@ xsmp_query_end_session (GsmClient *client,  {          gboolean allow_interact;          int      save_type; +        GsmXSMPClientPrivate *priv; -        if (GSM_XSMP_CLIENT (client)->priv->conn == NULL) { +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); + +        if (priv->conn == NULL) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -752,8 +787,11 @@ xsmp_end_session (GsmClient *client,                    GError   **error)  {          gboolean phase2; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(client)); -        if (GSM_XSMP_CLIENT (client)->priv->conn == NULL) { +        if (priv->conn == NULL) {                  g_set_error (error,                               GSM_CLIENT_ERROR,                               GSM_CLIENT_ERROR_NOT_REGISTERED, @@ -794,7 +832,7 @@ xsmp_get_app_name (GsmClient *client)          prop = find_property (GSM_XSMP_CLIENT (client), SmProgram, NULL);          if (prop) { -	        name = prop_to_command (prop); +                name = prop_to_command (prop);          }          return name; @@ -804,7 +842,10 @@ static void  gsm_client_set_ice_connection (GsmXSMPClient *client,                                 gpointer       conn)  { -        client->priv->ice_connection = conn; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (client); +        priv->ice_connection = conn;  }  static void @@ -833,13 +874,13 @@ gsm_xsmp_client_get_property (GObject    *object,                                GValue     *value,                                GParamSpec *pspec)  { -        GsmXSMPClient *self; +        GsmXSMPClientPrivate *priv; -        self = GSM_XSMP_CLIENT (object); +        priv = gsm_xsmp_client_get_instance_private (GSM_XSMP_CLIENT(object));          switch (prop_id) {          case PROP_ICE_CONNECTION: -                g_value_set_pointer (value, self->priv->ice_connection); +                g_value_set_pointer (value, priv->ice_connection);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -850,31 +891,39 @@ gsm_xsmp_client_get_property (GObject    *object,  static void  gsm_xsmp_client_disconnect (GsmXSMPClient *client)  { -        if (client->priv->watch_id > 0) { -                g_source_remove (client->priv->watch_id); +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (client); +        if (priv->watch_id > 0) { +                g_source_remove (priv->watch_id);          } -        if (client->priv->conn != NULL) { -                SmsCleanUp (client->priv->conn); +        if (priv->conn != NULL) { +                SmsCleanUp (priv->conn);          } -        if (client->priv->ice_connection != NULL) { -                IceSetShutdownNegotiation (client->priv->ice_connection, FALSE); -                IceCloseConnection (client->priv->ice_connection); +        if (priv->ice_connection != NULL) { +                IceSetShutdownNegotiation (priv->ice_connection, FALSE); +                IceCloseConnection (priv->ice_connection);          }  }  static void  gsm_xsmp_client_finalize (GObject *object)  { -        GsmXSMPClient *client = (GsmXSMPClient *) object; +        GsmXSMPClientPrivate *priv; +        GsmXSMPClient *client; + +        client = GSM_XSMP_CLIENT(object); + +        priv = gsm_xsmp_client_get_instance_private (client); -        g_debug ("GsmXSMPClient: xsmp_finalize (%s)", client->priv->description); +        g_debug ("GsmXSMPClient: xsmp_finalize (%s)", priv->description);          gsm_xsmp_client_disconnect (client); -        g_free (client->priv->description); -        g_ptr_array_foreach (client->priv->props, (GFunc)SmFreeProperty, NULL); -        g_ptr_array_free (client->priv->props, TRUE); +        g_free (priv->description); +        g_ptr_array_foreach (priv->props, (GFunc)SmFreeProperty, NULL); +        g_ptr_array_free (priv->props, TRUE);          G_OBJECT_CLASS (gsm_xsmp_client_parent_class)->finalize (object);  } @@ -1026,8 +1075,6 @@ gsm_xsmp_client_class_init (GsmXSMPClientClass *klass)                                                                 "ice-connection",                                                                 "ice-connection",                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - -        g_type_class_add_private (klass, sizeof (GsmXSMPClientPrivate));  }  GsmClient * @@ -1047,12 +1094,15 @@ register_client_callback (SmsConn    conn,                            SmPointer  manager_data,                            char      *previous_id)  { -        GsmXSMPClient *client = manager_data;          gboolean       handled;          char          *id; +        GsmXSMPClientPrivate *priv; + +        GsmXSMPClient *client = manager_data; +        priv = gsm_xsmp_client_get_instance_private (client);          g_debug ("GsmXSMPClient: Client '%s' received RegisterClient(%s)", -                 client->priv->description, +                 priv->description,                   previous_id ? previous_id : "NULL"); @@ -1083,7 +1133,7 @@ register_client_callback (SmsConn    conn,          set_description (client); -        g_debug ("GsmXSMPClient: Sending RegisterClientReply to '%s'", client->priv->description); +        g_debug ("GsmXSMPClient: Sending RegisterClientReply to '%s'", priv->description);          SmsRegisterClientReply (conn, id); @@ -1091,7 +1141,7 @@ register_client_callback (SmsConn    conn,                  /* Send the initial SaveYourself. */                  g_debug ("GsmXSMPClient: Sending initial SaveYourself");                  SmsSaveYourself (conn, SmSaveLocal, False, SmInteractStyleNone, False); -                client->priv->current_save_yourself = SmSaveLocal; +                priv->current_save_yourself = SmSaveLocal;          }          gsm_client_set_status (GSM_CLIENT (client), GSM_CLIENT_REGISTERED); @@ -1112,10 +1162,13 @@ save_yourself_request_callback (SmsConn   conn,                                  Bool      fast,                                  Bool      global)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; +        priv = gsm_xsmp_client_get_instance_private (client); +          g_debug ("GsmXSMPClient: Client '%s' received SaveYourselfRequest(%s, %s, %s, %s, %s)", -                 client->priv->description, +                 priv->description,                   save_type == SmSaveLocal ? "SmSaveLocal" :                   save_type == SmSaveGlobal ? "SmSaveGlobal" : "SmSaveBoth",                   shutdown ? "Shutdown" : "!Shutdown", @@ -1169,12 +1222,15 @@ static void  save_yourself_phase2_request_callback (SmsConn   conn,                                         SmPointer manager_data)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; +        priv = gsm_xsmp_client_get_instance_private (client); +          g_debug ("GsmXSMPClient: Client '%s' received SaveYourselfPhase2Request", -                 client->priv->description); +                 priv->description); -        client->priv->current_save_yourself = -1; +        priv->current_save_yourself = -1;          /* this is a valid response to SaveYourself and therefore             may be a response to a QES or ES */ @@ -1188,14 +1244,17 @@ interact_request_callback (SmsConn   conn,                             SmPointer manager_data,                             int       dialog_type)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; + +        priv = gsm_xsmp_client_get_instance_private (client);  #if 0          gboolean       res;          GError        *error;  #endif          g_debug ("GsmXSMPClient: Client '%s' received InteractRequest(%s)", -                 client->priv->description, +                 priv->description,                   dialog_type == SmDialogNormal ? "Dialog" : "Errors");          gsm_client_end_session_response (GSM_CLIENT (client), @@ -1223,10 +1282,13 @@ interact_done_callback (SmsConn   conn,                          SmPointer manager_data,                          Bool      cancel_shutdown)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; +        priv = gsm_xsmp_client_get_instance_private (client); +          g_debug ("GsmXSMPClient: Client '%s' received InteractDone(cancel_shutdown = %s)", -                 client->priv->description, +                 priv->description,                   cancel_shutdown ? "True" : "False");          gsm_client_end_session_response (GSM_CLIENT (client), @@ -1239,16 +1301,19 @@ save_yourself_done_callback (SmsConn   conn,                               SmPointer manager_data,                               Bool      success)  { +        GsmXSMPClientPrivate *priv;          GsmXSMPClient *client = manager_data; +        priv = gsm_xsmp_client_get_instance_private (client); +          g_debug ("GsmXSMPClient: Client '%s' received SaveYourselfDone(success = %s)", -                 client->priv->description, +                 priv->description,                   success ? "True" : "False"); -	if (client->priv->current_save_yourself != -1) { -		SmsSaveComplete (client->priv->conn); -		client->priv->current_save_yourself = -1; -	} +        if (priv->current_save_yourself != -1) { +                SmsSaveComplete (priv->conn); +                priv->current_save_yourself = -1; +        }          /* If success is false then the application couldn't save data. Nothing           * the session manager can do about, though. FIXME: we could display a @@ -1257,12 +1322,12 @@ save_yourself_done_callback (SmsConn   conn,                                           TRUE, FALSE, FALSE,                                           NULL); -        if (client->priv->next_save_yourself) { -                int      save_type = client->priv->next_save_yourself; -                gboolean allow_interact = client->priv->next_save_yourself_allow_interact; +        if (priv->next_save_yourself) { +                int      save_type = priv->next_save_yourself; +                gboolean allow_interact = priv->next_save_yourself_allow_interact; -                client->priv->next_save_yourself = -1; -                client->priv->next_save_yourself_allow_interact = -1; +                priv->next_save_yourself = -1; +                priv->next_save_yourself_allow_interact = -1;                  do_save_yourself (client, save_type, allow_interact);          }  } @@ -1273,10 +1338,13 @@ close_connection_callback (SmsConn     conn,                             int         count,                             char      **reason_msgs)  { -        GsmXSMPClient *client = manager_data;          int            i; +        GsmXSMPClientPrivate *priv; +        GsmXSMPClient *client = manager_data; -        g_debug ("GsmXSMPClient: Client '%s' received CloseConnection", client->priv->description); +        priv = gsm_xsmp_client_get_instance_private (client); + +        g_debug ("GsmXSMPClient: Client '%s' received CloseConnection", priv->description);          for (i = 0; i < count; i++) {                  g_debug ("GsmXSMPClient:  close reason: '%s'", reason_msgs[i]);          } @@ -1292,9 +1360,12 @@ gsm_xsmp_client_connect (GsmXSMPClient *client,                           unsigned long *mask_ret,                           SmsCallbacks  *callbacks_ret)  { -        client->priv->conn = conn; +        GsmXSMPClientPrivate *priv; + +        priv = gsm_xsmp_client_get_instance_private (client); +        priv->conn = conn; -        g_debug ("GsmXSMPClient: Initializing client %s", client->priv->description); +        g_debug ("GsmXSMPClient: Initializing client %s", priv->description);          *mask_ret = 0; diff --git a/mate-session/gsm-xsmp-client.h b/mate-session/gsm-xsmp-client.h index f14ab61..0078d64 100644 --- a/mate-session/gsm-xsmp-client.h +++ b/mate-session/gsm-xsmp-client.h @@ -25,27 +25,10 @@  #include <X11/SM/SMlib.h> -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS -#define GSM_TYPE_XSMP_CLIENT            (gsm_xsmp_client_get_type ()) -#define GSM_XSMP_CLIENT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_XSMP_CLIENT, GsmXSMPClient)) -#define GSM_XSMP_CLIENT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_XSMP_CLIENT, GsmXSMPClientClass)) -#define GSM_IS_XSMP_CLIENT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_XSMP_CLIENT)) -#define GSM_IS_XSMP_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_XSMP_CLIENT)) -#define GSM_XSMP_CLIENT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_XSMP_CLIENT, GsmXSMPClientClass)) - -typedef struct _GsmXSMPClient        GsmXSMPClient; -typedef struct _GsmXSMPClientClass   GsmXSMPClientClass; - -typedef struct GsmXSMPClientPrivate  GsmXSMPClientPrivate; - -struct _GsmXSMPClient -{ -        GsmClient             parent; -        GsmXSMPClientPrivate *priv; -}; +#define GSM_TYPE_XSMP_CLIENT              (gsm_xsmp_client_get_type ()) +G_DECLARE_DERIVABLE_TYPE                  (GsmXSMPClient, gsm_xsmp_client, GSM, XSMP_CLIENT, GsmClient)  struct _GsmXSMPClientClass  { @@ -86,8 +69,6 @@ void        gsm_xsmp_client_save_yourself_phase2 (GsmXSMPClient  *client);  void        gsm_xsmp_client_interact             (GsmXSMPClient  *client);  void        gsm_xsmp_client_shutdown_cancelled   (GsmXSMPClient  *client); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_XSMP_CLIENT_H__ */ diff --git a/mate-session/gsm-xsmp-server.c b/mate-session/gsm-xsmp-server.c index 83ec21f..293ed7a 100644 --- a/mate-session/gsm-xsmp-server.c +++ b/mate-session/gsm-xsmp-server.c @@ -61,10 +61,9 @@  #define GSM_ICE_MAGIC_COOKIE_AUTH_NAME "MIT-MAGIC-COOKIE-1"  #define GSM_ICE_MAGIC_COOKIE_LEN       16 -#define GSM_XSMP_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_XSMP_SERVER, GsmXsmpServerPrivate)) - -struct GsmXsmpServerPrivate +struct _GsmXsmpServer  { +        GObject         parent;          GsmStore       *client_store;          IceListenObj   *xsmp_sockets; @@ -229,14 +228,14 @@ gsm_xsmp_server_start (GsmXsmpServer *server)          GIOChannel *channel;          int         i; -        for (i = 0; i < server->priv->num_local_xsmp_sockets; i++) { +        for (i = 0; i < server->num_local_xsmp_sockets; i++) {                  GsmIceConnectionData *data;                  data = g_new0 (GsmIceConnectionData, 1);                  data->server = server; -                data->listener = server->priv->xsmp_sockets[i]; +                data->listener = server->xsmp_sockets[i]; -                channel = g_io_channel_unix_new (IceGetListenConnectionNumber (server->priv->xsmp_sockets[i])); +                channel = g_io_channel_unix_new (IceGetListenConnectionNumber (server->xsmp_sockets[i]));                  g_io_add_watch_full (channel,                                       G_PRIORITY_DEFAULT,                                       G_IO_IN | G_IO_HUP | G_IO_ERR, @@ -257,11 +256,11 @@ gsm_xsmp_server_set_client_store (GsmXsmpServer *xsmp_server,                  g_object_ref (store);          } -        if (xsmp_server->priv->client_store != NULL) { -                g_object_unref (xsmp_server->priv->client_store); +        if (xsmp_server->client_store != NULL) { +                g_object_unref (xsmp_server->client_store);          } -        xsmp_server->priv->client_store = store; +        xsmp_server->client_store = store;  }  static void @@ -296,7 +295,7 @@ gsm_xsmp_server_get_property (GObject    *object,          switch (prop_id) {          case PROP_CLIENT_STORE: -                g_value_set_object (value, self->priv->client_store); +                g_value_set_object (value, self->client_store);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -319,7 +318,7 @@ accept_xsmp_connection (SmsConn        sms_conn,          GsmIceConnectionWatch *data;          /* FIXME: what about during shutdown but before gsm_xsmp_shutdown? */ -        if (server->priv->xsmp_sockets == NULL) { +        if (server->xsmp_sockets == NULL) {                  g_debug ("GsmXsmpServer: In shutdown, rejecting new client");                  *failure_reason_ret = strdup (_("Refusing new client connection because the session is currently being shut down\n")); @@ -334,7 +333,7 @@ accept_xsmp_connection (SmsConn        sms_conn,          client = gsm_xsmp_client_new (ice_conn); -        gsm_store_add (server->priv->client_store, gsm_client_peek_id (client), G_OBJECT (client)); +        gsm_store_add (server->client_store, gsm_client_peek_id (client), G_OBJECT (client));          /* the store will own the ref */          g_object_unref (client); @@ -448,9 +447,9 @@ update_iceauthority (GsmXsmpServer *server,                  return FALSE;          } -        our_network_ids = g_malloc (server->priv->num_local_xsmp_sockets * sizeof (char *)); -        for (i = 0; i < server->priv->num_local_xsmp_sockets; i++) { -                our_network_ids[i] = IceGetListenConnectionString (server->priv->xsmp_sockets[i]); +        our_network_ids = g_malloc (server->num_local_xsmp_sockets * sizeof (char *)); +        for (i = 0; i < server->num_local_xsmp_sockets; i++) { +                our_network_ids[i] = IceGetListenConnectionString (server->xsmp_sockets[i]);          }          entries = NULL; @@ -469,13 +468,13 @@ update_iceauthority (GsmXsmpServer *server,                                  continue;                          } -                        for (i = 0; i < server->priv->num_local_xsmp_sockets; i++) { +                        for (i = 0; i < server->num_local_xsmp_sockets; i++) {                                  if (!strcmp (auth_entry->network_id, our_network_ids[i])) {                                          IceFreeAuthFileEntry (auth_entry);                                          break;                                  }                          } -                        if (i != server->priv->num_local_xsmp_sockets) { +                        if (i != server->num_local_xsmp_sockets) {                                  continue;                          } @@ -503,7 +502,7 @@ update_iceauthority (GsmXsmpServer *server,          }          if (adding) { -                for (i = 0; i < server->priv->num_local_xsmp_sockets; i++) { +                for (i = 0; i < server->num_local_xsmp_sockets; i++) {                          entries = g_slist_append (entries,                                                    auth_entry_new ("ICE", our_network_ids[i]));                          entries = g_slist_prepend (entries, @@ -523,7 +522,7 @@ update_iceauthority (GsmXsmpServer *server,   cleanup:          IceUnlockAuthFile (filename); -        for (i = 0; i < server->priv->num_local_xsmp_sockets; i++) { +        for (i = 0; i < server->num_local_xsmp_sockets; i++) {                  free (our_network_ids[i]);          }          g_free (our_network_ids); @@ -579,8 +578,8 @@ setup_listener (GsmXsmpServer *server)           */          saved_umask = umask (0);          umask (saved_umask); -        res = IceListenForConnections (&server->priv->num_xsmp_sockets, -                                       &server->priv->xsmp_sockets, +        res = IceListenForConnections (&server->num_xsmp_sockets, +                                       &server->xsmp_sockets,                                         sizeof (error),                                         error);          if (! res) { @@ -592,28 +591,28 @@ setup_listener (GsmXsmpServer *server)          /* Find the local sockets in the returned socket list and move them           * to the start of the list.           */ -        for (i = server->priv->num_local_xsmp_sockets = 0; i < server->priv->num_xsmp_sockets; i++) { -                char *id = IceGetListenConnectionString (server->priv->xsmp_sockets[i]); +        for (i = server->num_local_xsmp_sockets = 0; i < server->num_xsmp_sockets; i++) { +                char *id = IceGetListenConnectionString (server->xsmp_sockets[i]);                  if (!strncmp (id, "local/", sizeof ("local/") - 1) ||                      !strncmp (id, "unix/", sizeof ("unix/") - 1)) { -                        if (i > server->priv->num_local_xsmp_sockets) { +                        if (i > server->num_local_xsmp_sockets) {                                  IceListenObj tmp; -                                tmp = server->priv->xsmp_sockets[i]; -                                server->priv->xsmp_sockets[i] = server->priv->xsmp_sockets[server->priv->num_local_xsmp_sockets]; -                                server->priv->xsmp_sockets[server->priv->num_local_xsmp_sockets] = tmp; +                                tmp = server->xsmp_sockets[i]; +                                server->xsmp_sockets[i] = server->xsmp_sockets[server->num_local_xsmp_sockets]; +                                server->xsmp_sockets[server->num_local_xsmp_sockets] = tmp;                          } -                        server->priv->num_local_xsmp_sockets++; +                        server->num_local_xsmp_sockets++;                  }                  free (id);          } -        if (server->priv->num_local_xsmp_sockets == 0) { +        if (server->num_local_xsmp_sockets == 0) {                  gsm_util_init_error (TRUE, "IceListenForConnections did not return a local listener!");          }  #ifdef HAVE_XTRANS -        if (server->priv->num_local_xsmp_sockets != server->priv->num_xsmp_sockets) { +        if (server->num_local_xsmp_sockets != server->num_xsmp_sockets) {                  /* Xtrans was apparently compiled with support for some                   * non-local transport besides TCP (which we disabled above); we                   * won't create IO watches on those extra sockets, so @@ -624,10 +623,10 @@ setup_listener (GsmXsmpServer *server)                   * stop it, the fix is to add additional _IceTransNoListen()                   * calls above.                   */ -                network_id_list = IceComposeNetworkIdList (server->priv->num_xsmp_sockets - server->priv->num_local_xsmp_sockets, -                                                           server->priv->xsmp_sockets + server->priv->num_local_xsmp_sockets); +                network_id_list = IceComposeNetworkIdList (server->num_xsmp_sockets - server->num_local_xsmp_sockets, +                                                           server->xsmp_sockets + server->num_local_xsmp_sockets);                  g_warning ("IceListenForConnections returned %d non-local listeners: %s", -                           server->priv->num_xsmp_sockets - server->priv->num_local_xsmp_sockets, +                           server->num_xsmp_sockets - server->num_local_xsmp_sockets,                             network_id_list);                  free (network_id_list);          } @@ -641,8 +640,8 @@ setup_listener (GsmXsmpServer *server)                                       IceAuthFileName ());          } -        network_id_list = IceComposeNetworkIdList (server->priv->num_local_xsmp_sockets, -                                                   server->priv->xsmp_sockets); +        network_id_list = IceComposeNetworkIdList (server->num_local_xsmp_sockets, +                                                   server->xsmp_sockets);          gsm_util_setenv ("SESSION_MANAGER", network_id_list);          g_debug ("GsmXsmpServer: SESSION_MANAGER=%s\n", network_id_list); @@ -681,15 +680,11 @@ gsm_xsmp_server_class_init (GsmXsmpServerClass *klass)                                                                NULL,                                                                GSM_TYPE_STORE,                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - -        g_type_class_add_private (klass, sizeof (GsmXsmpServerPrivate));  }  static void  gsm_xsmp_server_init (GsmXsmpServer *xsmp_server)  { -        xsmp_server->priv = GSM_XSMP_SERVER_GET_PRIVATE (xsmp_server); -  }  static void @@ -702,13 +697,11 @@ gsm_xsmp_server_finalize (GObject *object)          xsmp_server = GSM_XSMP_SERVER (object); -        g_return_if_fail (xsmp_server->priv != NULL); - -        IceFreeListenObjs (xsmp_server->priv->num_xsmp_sockets,  -                           xsmp_server->priv->xsmp_sockets); +        IceFreeListenObjs (xsmp_server->num_xsmp_sockets,  +                           xsmp_server->xsmp_sockets); -        if (xsmp_server->priv->client_store != NULL) { -                g_object_unref (xsmp_server->priv->client_store); +        if (xsmp_server->client_store != NULL) { +                g_object_unref (xsmp_server->client_store);          }          G_OBJECT_CLASS (gsm_xsmp_server_parent_class)->finalize (object); diff --git a/mate-session/gsm-xsmp-server.h b/mate-session/gsm-xsmp-server.h index 3c4998a..29f72db 100644 --- a/mate-session/gsm-xsmp-server.h +++ b/mate-session/gsm-xsmp-server.h @@ -26,37 +26,14 @@  #include "gsm-store.h" -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_XSMP_SERVER         (gsm_xsmp_server_get_type ()) -#define GSM_XSMP_SERVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_XSMP_SERVER, GsmXsmpServer)) -#define GSM_XSMP_SERVER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_XSMP_SERVER, GsmXsmpServerClass)) -#define GSM_IS_XSMP_SERVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_XSMP_SERVER)) -#define GSM_IS_XSMP_SERVER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_XSMP_SERVER)) -#define GSM_XSMP_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_XSMP_SERVER, GsmXsmpServerClass)) - -typedef struct GsmXsmpServerPrivate GsmXsmpServerPrivate; - -typedef struct -{ -        GObject            parent; -        GsmXsmpServerPrivate *priv; -} GsmXsmpServer; - -typedef struct -{ -        GObjectClass   parent_class; -} GsmXsmpServerClass; - -GType               gsm_xsmp_server_get_type                       (void); +G_DECLARE_FINAL_TYPE (GsmXsmpServer, gsm_xsmp_server, GSM, XSMP_SERVER, GObject)  GsmXsmpServer *     gsm_xsmp_server_new                            (GsmStore      *client_store);  void                gsm_xsmp_server_start                          (GsmXsmpServer *server); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_XSMP_SERVER_H */ | 
