diff options
| -rw-r--r-- | mate-session/gsm-manager.c | 805 | ||||
| -rw-r--r-- | mate-session/gsm-manager.h | 27 | 
2 files changed, 516 insertions, 316 deletions
| diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c index 96205b1..5cd7771 100644 --- a/mate-session/gsm-manager.c +++ b/mate-session/gsm-manager.c @@ -113,8 +113,7 @@ typedef enum          GSM_MANAGER_LOGOUT_SHUTDOWN_MDM  } GsmManagerLogoutType; -struct GsmManagerPrivate -{ +typedef struct {          gboolean                failsafe;          GsmStore               *clients;          GsmStore               *inhibitors; @@ -147,7 +146,7 @@ struct GsmManagerPrivate          DBusGProxy             *bus_proxy;          DBusGConnection        *connection; -}; +} GsmManagerPrivate;  enum {          PROP_0, @@ -187,7 +186,7 @@ static void     maybe_save_session   (GsmManager *manager);  static gpointer manager_object = NULL; -G_DEFINE_TYPE (GsmManager, gsm_manager, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (GsmManager, gsm_manager, G_TYPE_OBJECT)  GQuark  gsm_manager_error_quark (void) @@ -239,7 +238,9 @@ _debug_client (const char *id,  static void  debug_clients (GsmManager *manager)  { -        gsm_store_foreach (manager->priv->clients, +        GsmManagerPrivate *priv; +        priv = gsm_manager_get_instance_private (manager); +        gsm_store_foreach (priv->clients,                             (GsmStoreFunc)_debug_client,                             manager);  } @@ -260,7 +261,10 @@ _debug_inhibitor (const char    *id,  static void  debug_inhibitors (GsmManager *manager)  { -        gsm_store_foreach (manager->priv->inhibitors, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        gsm_store_foreach (priv->inhibitors,                             (GsmStoreFunc)_debug_inhibitor,                             manager);  } @@ -298,12 +302,15 @@ app_condition_changed (GsmApp     *app,                         GsmManager *manager)  {          GsmClient *client; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          g_debug ("GsmManager: app:%s condition changed condition:%d",                   gsm_app_peek_id (app),                   condition); -        client = (GsmClient *)gsm_store_find (manager->priv->clients, +        client = (GsmClient *)gsm_store_find (priv->clients,                                                (GsmStoreFunc)_find_by_startup_id,                                                (char *)gsm_app_peek_startup_id (app)); @@ -331,8 +338,8 @@ app_condition_changed (GsmApp     *app,                          /* Kill client in case condition if false and make sure it won't                           * be automatically restarted by adding the client to                           * condition_clients */ -                        manager->priv->condition_clients = -                                g_slist_prepend (manager->priv->condition_clients, client); +                        priv->condition_clients = +                                g_slist_prepend (priv->condition_clients, client);                          g_debug ("GsmManager: stopping client %s for app", gsm_client_peek_id (client)); @@ -445,14 +452,16 @@ static void  gsm_manager_quit (GsmManager *manager)  {          GsmConsolekit *consolekit; +        GsmManagerPrivate *priv;  #ifdef HAVE_SYSTEMD          GsmSystemd *systemd;  #endif +        priv = gsm_manager_get_instance_private (manager);          /* See the comment in request_reboot() for some more details about how           * this works. */ -        switch (manager->priv->logout_type) { +        switch (priv->logout_type) {          case GSM_MANAGER_LOGOUT_LOGOUT:                  gtk_main_quit ();                  break; @@ -523,26 +532,29 @@ gsm_manager_quit (GsmManager *manager)  static void  end_phase (GsmManager *manager)  { +        GsmManagerPrivate *priv;          gboolean start_next_phase = TRUE; +        priv = gsm_manager_get_instance_private (manager); +          g_debug ("GsmManager: ending phase %s\n", -                 phase_num_to_name (manager->priv->phase)); +                 phase_num_to_name (priv->phase)); -        g_slist_free (manager->priv->pending_apps); -        manager->priv->pending_apps = NULL; +        g_slist_free (priv->pending_apps); +        priv->pending_apps = NULL; -        g_slist_free (manager->priv->query_clients); -        manager->priv->query_clients = NULL; +        g_slist_free (priv->query_clients); +        priv->query_clients = NULL; -        g_slist_free (manager->priv->next_query_clients); -        manager->priv->next_query_clients = NULL; +        g_slist_free (priv->next_query_clients); +        priv->next_query_clients = NULL; -        if (manager->priv->phase_timeout_id > 0) { -                g_source_remove (manager->priv->phase_timeout_id); -                manager->priv->phase_timeout_id = 0; +        if (priv->phase_timeout_id > 0) { +                g_source_remove (priv->phase_timeout_id); +                priv->phase_timeout_id = 0;          } -        switch (manager->priv->phase) { +        switch (priv->phase) {          case GSM_MANAGER_PHASE_STARTUP:          case GSM_MANAGER_PHASE_INITIALIZATION:          case GSM_MANAGER_PHASE_WINDOW_MANAGER: @@ -572,22 +584,25 @@ end_phase (GsmManager *manager)          }          if (start_next_phase) { -                manager->priv->phase++; +                priv->phase++;                  start_phase (manager); -	} +        }  }  static void  app_registered (GsmApp     *app,                  GsmManager *manager)  { -        manager->priv->pending_apps = g_slist_remove (manager->priv->pending_apps, app); +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        priv->pending_apps = g_slist_remove (priv->pending_apps, app);          g_signal_handlers_disconnect_by_func (app, app_registered, manager); -        if (manager->priv->pending_apps == NULL) { -                if (manager->priv->phase_timeout_id > 0) { -                        g_source_remove (manager->priv->phase_timeout_id); -                        manager->priv->phase_timeout_id = 0; +        if (priv->pending_apps == NULL) { +                if (priv->phase_timeout_id > 0) { +                        g_source_remove (priv->phase_timeout_id); +                        priv->phase_timeout_id = 0;                  }                  end_phase (manager); @@ -607,17 +622,19 @@ static gboolean  on_phase_timeout (GsmManager *manager)  {          GSList *a; +        GsmManagerPrivate *priv; -        manager->priv->phase_timeout_id = 0; +        priv = gsm_manager_get_instance_private (manager); +        priv->phase_timeout_id = 0; -        switch (manager->priv->phase) { +        switch (priv->phase) {          case GSM_MANAGER_PHASE_STARTUP:          case GSM_MANAGER_PHASE_INITIALIZATION:          case GSM_MANAGER_PHASE_WINDOW_MANAGER:          case GSM_MANAGER_PHASE_PANEL:          case GSM_MANAGER_PHASE_DESKTOP:          case GSM_MANAGER_PHASE_APPLICATION: -                for (a = manager->priv->pending_apps; a; a = a->next) { +                for (a = priv->pending_apps; a; a = a->next) {                          g_warning ("Application '%s' failed to register before timeout",                                     gsm_app_peek_app_id (a->data));                          g_signal_handlers_disconnect_by_func (a->data, app_registered, manager); @@ -630,7 +647,7 @@ on_phase_timeout (GsmManager *manager)          case GSM_MANAGER_PHASE_END_SESSION:                  break;          case GSM_MANAGER_PHASE_EXIT: -                gsm_store_foreach (manager->priv->clients, +                gsm_store_foreach (priv->clients,                                     (GsmStoreFunc)_client_failed_to_stop,                                     NULL);                  break; @@ -676,8 +693,11 @@ _start_app (const char *id,          GError  *error;          gboolean res;          int      delay; +        GsmManagerPrivate *priv; -        if (gsm_app_peek_phase (app) != manager->priv->phase) { +        priv = gsm_manager_get_instance_private (manager); + +        if (gsm_app_peek_phase (app) != priv->phase) {                  goto out;          } @@ -716,7 +736,7 @@ _start_app (const char *id,                  goto out;          } -        if (manager->priv->phase < GSM_MANAGER_PHASE_APPLICATION) { +        if (priv->phase < GSM_MANAGER_PHASE_APPLICATION) {                  g_signal_connect (app,                                    "exited",                                    G_CALLBACK (app_registered), @@ -725,7 +745,7 @@ _start_app (const char *id,                                    "registered",                                    G_CALLBACK (app_registered),                                    manager); -                manager->priv->pending_apps = g_slist_prepend (manager->priv->pending_apps, app); +                priv->pending_apps = g_slist_prepend (priv->pending_apps, app);          }   out:          return FALSE; @@ -734,15 +754,18 @@ _start_app (const char *id,  static void  do_phase_startup (GsmManager *manager)  { -        gsm_store_foreach (manager->priv->apps, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        gsm_store_foreach (priv->apps,                             (GsmStoreFunc)_start_app,                             manager); -        if (manager->priv->pending_apps != NULL) { -                if (manager->priv->phase < GSM_MANAGER_PHASE_APPLICATION) { -                        manager->priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_PHASE_TIMEOUT, -                                                                                 (GSourceFunc)on_phase_timeout, -                                                                                 manager); +        if (priv->pending_apps != NULL) { +                if (priv->phase < GSM_MANAGER_PHASE_APPLICATION) { +                        priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_PHASE_TIMEOUT, +                                                                        (GSourceFunc)on_phase_timeout, +                                                                        manager);                  }          } else {                  end_phase (manager); @@ -761,6 +784,9 @@ _client_end_session (GsmClient            *client,  {          gboolean ret;          GError  *error; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (data->manager);          error = NULL;          ret = gsm_client_end_session (client, data->flags, &error); @@ -770,8 +796,8 @@ _client_end_session (GsmClient            *client,                  /* FIXME: what should we do if we can't communicate with client? */          } else {                  g_debug ("GsmManager: adding client to end-session clients: %s", gsm_client_peek_id (client)); -                data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients, -                                                                      client); +                priv->query_clients = g_slist_prepend (priv->query_clients, +                                                       client);          }          return FALSE; @@ -789,28 +815,30 @@ static void  do_phase_end_session (GsmManager *manager)  {          ClientEndSessionData data; +        GsmManagerPrivate *priv;          data.manager = manager;          data.flags = 0; +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { +        if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) {                  data.flags |= GSM_CLIENT_END_SESSION_FLAG_FORCEFUL;          }          if (auto_save_is_enabled (manager)) {                  data.flags |= GSM_CLIENT_END_SESSION_FLAG_SAVE;          } -        if (manager->priv->phase_timeout_id > 0) { -                g_source_remove (manager->priv->phase_timeout_id); -                manager->priv->phase_timeout_id = 0; +        if (priv->phase_timeout_id > 0) { +                g_source_remove (priv->phase_timeout_id); +                priv->phase_timeout_id = 0;          } -        if (gsm_store_size (manager->priv->clients) > 0) { -                manager->priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_PHASE_TIMEOUT, -                                                                         (GSourceFunc)on_phase_timeout, -                                                                         manager); +        if (gsm_store_size (priv->clients) > 0) { +                priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_PHASE_TIMEOUT, +                                                                (GSourceFunc)on_phase_timeout, +                                                                manager); -                gsm_store_foreach (manager->priv->clients, +                gsm_store_foreach (priv->clients,                                     (GsmStoreFunc)_client_end_session_helper,                                     &data);          } else { @@ -822,11 +850,13 @@ static void  do_phase_end_session_part_2 (GsmManager *manager)  {          ClientEndSessionData data; +        GsmManagerPrivate *priv;          data.manager = manager;          data.flags = 0; +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { +        if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) {                  data.flags |= GSM_CLIENT_END_SESSION_FLAG_FORCEFUL;          }          if (auto_save_is_enabled (manager)) { @@ -837,13 +867,13 @@ do_phase_end_session_part_2 (GsmManager *manager)          /* keep the timeout that was started at the beginning of the           * GSM_MANAGER_PHASE_END_SESSION phase */ -        if (g_slist_length (manager->priv->next_query_clients) > 0) { -                g_slist_foreach (manager->priv->next_query_clients, +        if (g_slist_length (priv->next_query_clients) > 0) { +                g_slist_foreach (priv->next_query_clients,                                   (GFunc)_client_end_session,                                   &data); -                g_slist_free (manager->priv->next_query_clients); -                manager->priv->next_query_clients = NULL; +                g_slist_free (priv->next_query_clients); +                priv->next_query_clients = NULL;          } else {                  end_phase (manager);          } @@ -873,12 +903,15 @@ _client_stop (const char *id,  static void  do_phase_exit (GsmManager *manager)  { -        if (gsm_store_size (manager->priv->clients) > 0) { -                manager->priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_EXIT_PHASE_TIMEOUT, -                                                                         (GSourceFunc)on_phase_timeout, -                                                                         manager); +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        if (gsm_store_size (priv->clients) > 0) { +                priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_EXIT_PHASE_TIMEOUT, +                                                                (GSourceFunc)on_phase_timeout, +                                                                manager); -                gsm_store_foreach (manager->priv->clients, +                gsm_store_foreach (priv->clients,                                     (GsmStoreFunc)_client_stop,                                     NULL);          } else { @@ -893,6 +926,9 @@ _client_query_end_session (const char           *id,  {          gboolean ret;          GError  *error; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (data->manager);          error = NULL;          ret = gsm_client_query_end_session (client, data->flags, &error); @@ -902,8 +938,7 @@ _client_query_end_session (const char           *id,                  /* FIXME: what should we do if we can't communicate with client? */          } else {                  g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client)); -                data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients, -                                                                      client); +                priv->query_clients = g_slist_prepend (priv->query_clients, client);          }          return FALSE; @@ -928,12 +963,15 @@ static gboolean  gsm_manager_is_logout_inhibited (GsmManager *manager)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->inhibitors == NULL) { +        if (priv->inhibitors == NULL) {                  return FALSE;          } -        inhibitor = (GsmInhibitor *)gsm_store_find (manager->priv->inhibitors, +        inhibitor = (GsmInhibitor *)gsm_store_find (priv->inhibitors,                                                      (GsmStoreFunc)inhibitor_has_flag,                                                      GUINT_TO_POINTER (GSM_INHIBITOR_FLAG_LOGOUT));          if (inhibitor == NULL) { @@ -946,12 +984,15 @@ static gboolean  gsm_manager_is_idle_inhibited (GsmManager *manager)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv; -        if (manager->priv->inhibitors == NULL) { +        priv = gsm_manager_get_instance_private (manager); + +        if (priv->inhibitors == NULL) {                  return FALSE;          } -        inhibitor = (GsmInhibitor *)gsm_store_find (manager->priv->inhibitors, +        inhibitor = (GsmInhibitor *)gsm_store_find (priv->inhibitors,                                                      (GsmStoreFunc)inhibitor_has_flag,                                                      GUINT_TO_POINTER (GSM_INHIBITOR_FLAG_IDLE));          if (inhibitor == NULL) { @@ -996,8 +1037,11 @@ inhibitor_is_jit (gpointer      key,  static void  cancel_end_session (GsmManager *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* just ignore if received outside of shutdown */ -        if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        if (priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  return;          } @@ -1007,23 +1051,23 @@ cancel_end_session (GsmManager *manager)          /* remove the dialog before we remove the inhibitors, else the dialog           * will activate itself automatically when the last inhibitor will be           * removed */ -        if (manager->priv->inhibit_dialog) -                gtk_widget_destroy (GTK_WIDGET (manager->priv->inhibit_dialog)); -        manager->priv->inhibit_dialog = NULL; +        if (priv->inhibit_dialog) +                gtk_widget_destroy (GTK_WIDGET (priv->inhibit_dialog)); +        priv->inhibit_dialog = NULL;          /* clear all JIT inhibitors */ -        gsm_store_foreach_remove (manager->priv->inhibitors, +        gsm_store_foreach_remove (priv->inhibitors,                                    (GsmStoreFunc)inhibitor_is_jit,                                    (gpointer)manager); -        gsm_store_foreach (manager->priv->clients, +        gsm_store_foreach (priv->clients,                             (GsmStoreFunc)_client_cancel_end_session,                             NULL);          gsm_manager_set_phase (manager, GSM_MANAGER_PHASE_RUNNING); -        manager->priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL; +        priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL; -        manager->priv->logout_type = GSM_MANAGER_LOGOUT_NONE; +        priv->logout_type = GSM_MANAGER_LOGOUT_NONE;          mdm_set_logout_action (MDM_LOGOUT_ACTION_NONE);          start_phase (manager); @@ -1085,8 +1129,8 @@ manager_switch_user (GsmManager *manager)          else if (process_is_running("gdm") || process_is_running("gdm3") || process_is_running("gdm-binary")) {                  /* GDM */                  command = g_strdup_printf ("%s %s", -                                               GDM_FLEXISERVER_COMMAND, -                                               GDM_FLEXISERVER_ARGS); +                                           GDM_FLEXISERVER_COMMAND, +                                           GDM_FLEXISERVER_ARGS);                  error = NULL;                  res = g_spawn_command_line_sync (command, NULL, NULL, NULL, &error); @@ -1132,8 +1176,11 @@ manager_switch_user (GsmManager *manager)  static gboolean  sleep_lock_is_enabled (GsmManager *manager)  { -        if (manager->priv->settings_screensaver != NULL) -                return g_settings_get_boolean (manager->priv->settings_screensaver, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        if (priv->settings_screensaver != NULL) +                return g_settings_get_boolean (priv->settings_screensaver,                                                 KEY_SLEEP_LOCK);          else                  return FALSE; @@ -1227,6 +1274,9 @@ static void  do_inhibit_dialog_action (GsmManager *manager,                            int         action)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          switch (action) {          case GSM_LOGOUT_ACTION_SWITCH_USER:                  manager_switch_user (manager); @@ -1240,7 +1290,7 @@ do_inhibit_dialog_action (GsmManager *manager,          case GSM_LOGOUT_ACTION_SHUTDOWN:          case GSM_LOGOUT_ACTION_REBOOT:          case GSM_LOGOUT_ACTION_LOGOUT: -                manager->priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_FORCE; +                priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_FORCE;                  end_phase (manager);                  break;          default: @@ -1255,15 +1305,17 @@ inhibit_dialog_response (GsmInhibitDialog *dialog,                           GsmManager       *manager)  {          int action; +        GsmManagerPrivate *priv;          g_debug ("GsmManager: Inhibit dialog response: %d", response_id); +        priv = gsm_manager_get_instance_private (manager);          /* must destroy dialog before cancelling since we'll             remove JIT inhibitors and we don't want to trigger             action. */          g_object_get (dialog, "action", &action, NULL);          gtk_widget_destroy (GTK_WIDGET (dialog)); -        manager->priv->inhibit_dialog = NULL; +        priv->inhibit_dialog = NULL;          /* In case of dialog cancel, switch user, hibernate and           * suspend, we just perform the respective action and return, @@ -1292,14 +1344,17 @@ static void  query_end_session_complete (GsmManager *manager)  {          GsmLogoutAction action; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          g_debug ("GsmManager: query end session complete");          /* Remove the timeout since this can be called from outside the timer           * and we don't want to have it called twice */ -        if (manager->priv->query_timeout_id > 0) { -                g_source_remove (manager->priv->query_timeout_id); -                manager->priv->query_timeout_id = 0; +        if (priv->query_timeout_id > 0) { +                g_source_remove (priv->query_timeout_id); +                priv->query_timeout_id = 0;          }          if (! gsm_manager_is_logout_inhibited (manager)) { @@ -1307,13 +1362,13 @@ query_end_session_complete (GsmManager *manager)                  return;          } -        if (manager->priv->inhibit_dialog != NULL) { +        if (priv->inhibit_dialog != NULL) {                  g_debug ("GsmManager: inhibit dialog already up"); -                gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog)); +                gtk_window_present (GTK_WINDOW (priv->inhibit_dialog));                  return;          } -        switch (manager->priv->logout_type) { +        switch (priv->logout_type) {          case GSM_MANAGER_LOGOUT_LOGOUT:                  action = GSM_LOGOUT_ACTION_LOGOUT;                  break; @@ -1329,7 +1384,7 @@ query_end_session_complete (GsmManager *manager)                  break;          default:                  g_warning ("Unexpected logout type %d when creating inhibit dialog", -                           manager->priv->logout_type); +                           priv->logout_type);                  action = GSM_LOGOUT_ACTION_LOGOUT;                  break;          } @@ -1338,15 +1393,15 @@ query_end_session_complete (GsmManager *manager)           * actually handled the same way as GSM_LOGOUT_ACTION_LOGOUT in the           * inhibit dialog; the action, if the button is clicked, will be to           * simply go to the next phase. */ -        manager->priv->inhibit_dialog = gsm_inhibit_dialog_new (manager->priv->inhibitors, -                                                                manager->priv->clients, -                                                                action); +        priv->inhibit_dialog = gsm_inhibit_dialog_new (priv->inhibitors, +                                                       priv->clients, +                                                       action); -        g_signal_connect (manager->priv->inhibit_dialog, +        g_signal_connect (priv->inhibit_dialog,                            "response",                            G_CALLBACK (inhibit_dialog_response),                            manager); -        gtk_widget_show (manager->priv->inhibit_dialog); +        gtk_widget_show (priv->inhibit_dialog);  } @@ -1364,10 +1419,13 @@ static guint32  _generate_unique_cookie (GsmManager *manager)  {          guint32 cookie; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          do {                  cookie = generate_cookie (); -        } while (gsm_store_find (manager->priv->inhibitors, (GsmStoreFunc)_find_by_cookie, &cookie) != NULL); +        } while (gsm_store_find (priv->inhibitors, (GsmStoreFunc)_find_by_cookie, &cookie) != NULL);          return cookie;  } @@ -1376,12 +1434,15 @@ static gboolean  _on_query_end_session_timeout (GsmManager *manager)  {          GSList *l; +        GsmManagerPrivate *priv; -        manager->priv->query_timeout_id = 0; +        priv = gsm_manager_get_instance_private (manager); + +        priv->query_timeout_id = 0;          g_debug ("GsmManager: query end session timed out"); -        for (l = manager->priv->query_clients; l != NULL; l = l->next) { +        for (l = priv->query_clients; l != NULL; l = l->next) {                  guint         cookie;                  GsmInhibitor *inhibitor;                  const char   *bus_name; @@ -1392,7 +1453,7 @@ _on_query_end_session_timeout (GsmManager *manager)                  /* Don't add "not responding" inhibitors if logout is forced                   */ -                if (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { +                if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) {                          continue;                  } @@ -1418,12 +1479,12 @@ _on_query_end_session_timeout (GsmManager *manager)                                                            bus_name,                                                            cookie);                  g_free (app_id); -                gsm_store_add (manager->priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor)); +                gsm_store_add (priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor));                  g_object_unref (inhibitor);          } -        g_slist_free (manager->priv->query_clients); -        manager->priv->query_clients = NULL; +        g_slist_free (priv->query_clients); +        priv->query_clients = NULL;          query_end_session_complete (manager); @@ -1434,11 +1495,13 @@ static void  do_phase_query_end_session (GsmManager *manager)  {          ClientEndSessionData data; +        GsmManagerPrivate *priv;          data.manager = manager;          data.flags = 0; +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { +        if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) {                  data.flags |= GSM_CLIENT_END_SESSION_FLAG_FORCEFUL;          }          /* We only query if an app is ready to log out, so we don't use @@ -1447,53 +1510,59 @@ do_phase_query_end_session (GsmManager *manager)          debug_clients (manager);          g_debug ("GsmManager: sending query-end-session to clients (logout mode: %s)", -                 manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_NORMAL? "normal" : -                 manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE? "forceful": +                 priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_NORMAL? "normal" : +                 priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE? "forceful":                   "no confirmation"); -        gsm_store_foreach (manager->priv->clients, +        gsm_store_foreach (priv->clients,                             (GsmStoreFunc)_client_query_end_session,                             &data);          /* This phase doesn't time out unless logout is forced. Typically, this           * separate timer is only used to show UI. */ -        manager->priv->query_timeout_id = g_timeout_add_seconds (1, (GSourceFunc)_on_query_end_session_timeout, manager); +        priv->query_timeout_id = g_timeout_add_seconds (1, (GSourceFunc)_on_query_end_session_timeout, manager);  }  static void  update_idle (GsmManager *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          if (gsm_manager_is_idle_inhibited (manager)) { -                gsm_presence_set_idle_enabled (manager->priv->presence, FALSE); +                gsm_presence_set_idle_enabled (priv->presence, FALSE);          } else { -                gsm_presence_set_idle_enabled (manager->priv->presence, TRUE); +                gsm_presence_set_idle_enabled (priv->presence, TRUE);          }  }  static void  start_phase (GsmManager *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          g_debug ("GsmManager: starting phase %s\n", -                 phase_num_to_name (manager->priv->phase)); +                 phase_num_to_name (priv->phase));          /* reset state */ -        g_slist_free (manager->priv->pending_apps); -        manager->priv->pending_apps = NULL; -        g_slist_free (manager->priv->query_clients); -        manager->priv->query_clients = NULL; -        g_slist_free (manager->priv->next_query_clients); -        manager->priv->next_query_clients = NULL; +        g_slist_free (priv->pending_apps); +        priv->pending_apps = NULL; +        g_slist_free (priv->query_clients); +        priv->query_clients = NULL; +        g_slist_free (priv->next_query_clients); +        priv->next_query_clients = NULL; -        if (manager->priv->query_timeout_id > 0) { -                g_source_remove (manager->priv->query_timeout_id); -                manager->priv->query_timeout_id = 0; +        if (priv->query_timeout_id > 0) { +                g_source_remove (priv->query_timeout_id); +                priv->query_timeout_id = 0;          } -        if (manager->priv->phase_timeout_id > 0) { -                g_source_remove (manager->priv->phase_timeout_id); -                manager->priv->phase_timeout_id = 0; +        if (priv->phase_timeout_id > 0) { +                g_source_remove (priv->phase_timeout_id); +                priv->phase_timeout_id = 0;          } -        switch (manager->priv->phase) { +        switch (priv->phase) {          case GSM_MANAGER_PHASE_STARTUP:          case GSM_MANAGER_PHASE_INITIALIZATION:          case GSM_MANAGER_PHASE_WINDOW_MANAGER: @@ -1548,11 +1617,14 @@ static void  debug_app_summary (GsmManager *manager)  {          guint phase; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          g_debug ("GsmManager: App startup summary");          for (phase = GSM_MANAGER_PHASE_INITIALIZATION; phase < GSM_MANAGER_PHASE_RUNNING; phase++) {                  g_debug ("GsmManager: Phase %s", phase_num_to_name (phase)); -                gsm_store_foreach (manager->priv->apps, +                gsm_store_foreach (priv->apps,                                     (GsmStoreFunc)_debug_app_for_phase,                                     GUINT_TO_POINTER (phase));          } @@ -1586,7 +1658,10 @@ find_app_for_app_id (GsmManager *manager,                       const char *app_id)  {          GsmApp *app; -        app = (GsmApp *)gsm_store_find (manager->priv->apps, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        app = (GsmApp *)gsm_store_find (priv->apps,                                          (GsmStoreFunc)_app_has_app_id,                                          (char *)app_id);          return app; @@ -1637,14 +1712,16 @@ find_app_for_startup_id (GsmManager *manager,  {          GsmApp *found_app;          GSList *a; +        GsmManagerPrivate *priv;          found_app = NULL; +        priv = gsm_manager_get_instance_private (manager);          /* If we're starting up the session, try to match the new client           * with one pending apps for the current phase. If not, try to match           * with any of the autostarted apps. */ -        if (manager->priv->phase < GSM_MANAGER_PHASE_APPLICATION) { -                for (a = manager->priv->pending_apps; a != NULL; a = a->next) { +        if (priv->phase < GSM_MANAGER_PHASE_APPLICATION) { +                for (a = priv->pending_apps; a != NULL; a = a->next) {                          GsmApp *app = GSM_APP (a->data);                          if (strcmp (startup_id, gsm_app_peek_startup_id (app)) == 0) { @@ -1655,7 +1732,7 @@ find_app_for_startup_id (GsmManager *manager,          } else {                  GsmApp *app; -                app = (GsmApp *)gsm_store_find (manager->priv->apps, +                app = (GsmApp *)gsm_store_find (priv->apps,                                                  (GsmStoreFunc)_app_has_startup_id,                                                  (char *)startup_id);                  if (app != NULL) { @@ -1679,6 +1756,7 @@ _disconnect_client (GsmManager *manager,          const char           *startup_id;          gboolean              app_restart;          GsmClientRestartStyle client_restart_hint; +        GsmManagerPrivate *priv;          g_debug ("GsmManager: disconnect client: %s", gsm_client_peek_id (client)); @@ -1688,14 +1766,15 @@ _disconnect_client (GsmManager *manager,          gsm_client_set_status (client, GSM_CLIENT_FINISHED);          is_condition_client = FALSE; -        if (g_slist_find (manager->priv->condition_clients, client)) { -                manager->priv->condition_clients = g_slist_remove (manager->priv->condition_clients, client); +        priv = gsm_manager_get_instance_private (manager); +        if (g_slist_find (priv->condition_clients, client)) { +                priv->condition_clients = g_slist_remove (priv->condition_clients, client);                  is_condition_client = TRUE;          }          /* remove any inhibitors for this client */ -        gsm_store_foreach_remove (manager->priv->inhibitors, +        gsm_store_foreach_remove (priv->inhibitors,                                    (GsmStoreFunc)inhibitor_has_client_id,                                    (gpointer)gsm_client_peek_id (client)); @@ -1717,7 +1796,7 @@ _disconnect_client (GsmManager *manager,                  }          } -        if (manager->priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        if (priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  /* Instead of answering our end session query, the client just exited.                   * Treat that as an "okay, end the session" answer.                   * @@ -1740,7 +1819,7 @@ _disconnect_client (GsmManager *manager,                  goto out;          } -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  g_debug ("GsmManager: in shutdown, not restarting application");                  goto out;          } @@ -1807,17 +1886,19 @@ remove_clients_for_connection (GsmManager *manager,                                 const char *service_name)  {          RemoveClientData data; +        GsmManagerPrivate *priv;          data.service_name = service_name;          data.manager = manager; +        priv = gsm_manager_get_instance_private (manager);          /* disconnect dbus clients for name */ -        gsm_store_foreach_remove (manager->priv->clients, +        gsm_store_foreach_remove (priv->clients,                                    (GsmStoreFunc)_disconnect_dbus_client,                                    &data); -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION -            && gsm_store_size (manager->priv->clients) == 0) { +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION +            && gsm_store_size (priv->clients) == 0) {                  g_debug ("GsmManager: last client disconnected - exiting");                  end_phase (manager);          } @@ -1853,13 +1934,15 @@ remove_inhibitors_for_connection (GsmManager *manager,  {          guint UNUSED_VARIABLE n_removed;          RemoveClientData data; +        GsmManagerPrivate *priv;          data.service_name = service_name;          data.manager = manager; +        priv = gsm_manager_get_instance_private (manager);          debug_inhibitors (manager); -        n_removed = gsm_store_foreach_remove (manager->priv->inhibitors, +        n_removed = gsm_store_foreach_remove (priv->inhibitors,                                                (GsmStoreFunc)inhibitor_has_bus_name,                                                &data);  } @@ -1889,10 +1972,13 @@ static gboolean  register_manager (GsmManager *manager)  {          GError *error = NULL; +        GsmManagerPrivate *priv;          error = NULL; -        manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -        if (manager->priv->connection == NULL) { +        priv = gsm_manager_get_instance_private (manager); + +        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); @@ -1900,23 +1986,23 @@ register_manager (GsmManager *manager)                  exit (1);          } -        manager->priv->bus_proxy = dbus_g_proxy_new_for_name (manager->priv->connection, -                                                              DBUS_SERVICE_DBUS, -                                                              DBUS_PATH_DBUS, -                                                              DBUS_INTERFACE_DBUS); -        dbus_g_proxy_add_signal (manager->priv->bus_proxy, +        priv->bus_proxy = dbus_g_proxy_new_for_name (priv->connection, +                                                     DBUS_SERVICE_DBUS, +                                                     DBUS_PATH_DBUS, +                                                     DBUS_INTERFACE_DBUS); +        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 (bus_name_owner_changed),                                       manager,                                       NULL); -        dbus_g_connection_register_g_object (manager->priv->connection, GSM_MANAGER_DBUS_PATH, G_OBJECT (manager)); +        dbus_g_connection_register_g_object (priv->connection, GSM_MANAGER_DBUS_PATH, G_OBJECT (manager));          return TRUE;  } @@ -1925,9 +2011,13 @@ static void  gsm_manager_set_failsafe (GsmManager *manager,                            gboolean    enabled)  { +        GsmManagerPrivate *priv; +          g_return_if_fail (GSM_IS_MANAGER (manager)); -        manager->priv->failsafe = enabled; +        priv = gsm_manager_get_instance_private (manager); + +        priv->failsafe = enabled;  }  static gboolean @@ -1950,11 +2040,16 @@ static void  on_client_disconnected (GsmClient  *client,                          GsmManager *manager)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: disconnect client"); + +        priv = gsm_manager_get_instance_private (manager); +          _disconnect_client (manager, client); -        gsm_store_remove (manager->priv->clients, gsm_client_peek_id (client)); -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION -            && gsm_store_size (manager->priv->clients) == 0) { +        gsm_store_remove (priv->clients, gsm_client_peek_id (client)); +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION +            && gsm_store_size (priv->clients) == 0) {                  g_debug ("GsmManager: last client disconnected - exiting");                  end_phase (manager);          } @@ -1968,11 +2063,13 @@ on_xsmp_client_register_request (GsmXSMPClient *client,          gboolean handled;          char    *new_id;          GsmApp  *app; +        GsmManagerPrivate *priv;          handled = TRUE;          new_id = NULL; +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  goto out;          } @@ -1981,7 +2078,7 @@ on_xsmp_client_register_request (GsmXSMPClient *client,          } else {                  GsmClient *client; -                client = (GsmClient *)gsm_store_find (manager->priv->clients, +                client = (GsmClient *)gsm_store_find (priv->clients,                                                        (GsmStoreFunc)_client_has_startup_id,                                                        *id);                  /* We can't have two clients with the same id. */ @@ -2025,7 +2122,10 @@ on_xsmp_client_register_request (GsmXSMPClient *client,  static gboolean  auto_save_is_enabled (GsmManager *manager)  { -        return g_settings_get_boolean (manager->priv->settings_session, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        return g_settings_get_boolean (priv->settings_session,                                         KEY_AUTOSAVE);  } @@ -2038,6 +2138,7 @@ maybe_save_session (GsmManager *manager)  #endif          char *session_type;          GError *error; +        GsmManagerPrivate *priv;  #ifdef HAVE_SYSTEMD          if (LOGIND_RUNNING()) { @@ -2060,15 +2161,16 @@ maybe_save_session (GsmManager *manager)          }  #endif +        priv = gsm_manager_get_instance_private (manager);          /* We only allow session saving when session is running or when           * logging out */ -        if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING && -            manager->priv->phase != GSM_MANAGER_PHASE_END_SESSION) { +        if (priv->phase != GSM_MANAGER_PHASE_RUNNING && +            priv->phase != GSM_MANAGER_PHASE_END_SESSION) {                  goto out;          }          error = NULL; -        gsm_session_save (manager->priv->clients, &error); +        gsm_session_save (priv->clients, &error);          if (error) {                  g_warning ("Error saving session: %s", error->message); @@ -2093,8 +2195,11 @@ _handle_client_end_session_response (GsmManager *manager,                                       gboolean    cancel,                                       const char *reason)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* just ignore if received outside of shutdown */ -        if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        if (priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  return;          } @@ -2105,9 +2210,9 @@ _handle_client_end_session_response (GsmManager *manager,                  return;          } -        manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client); +        priv->query_clients = g_slist_remove (priv->query_clients, client); -        if (! is_ok && manager->priv->logout_mode != GSM_MANAGER_LOGOUT_MODE_FORCE) { +        if (! is_ok && priv->logout_mode != GSM_MANAGER_LOGOUT_MODE_FORCE) {                  guint         cookie;                  GsmInhibitor *inhibitor;                  char         *app_id; @@ -2137,37 +2242,37 @@ _handle_client_end_session_response (GsmManager *manager,                                                            bus_name,                                                            cookie);                  g_free (app_id); -                gsm_store_add (manager->priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor)); +                gsm_store_add (priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor));                  g_object_unref (inhibitor);          } else { -                gsm_store_foreach_remove (manager->priv->inhibitors, +                gsm_store_foreach_remove (priv->inhibitors,                                            (GsmStoreFunc)inhibitor_has_client_id,                                            (gpointer)gsm_client_peek_id (client));          } -        if (manager->priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION) { -                if (manager->priv->query_clients == NULL) { +        if (priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION) { +                if (priv->query_clients == NULL) {                          query_end_session_complete (manager);                  } -        } else if (manager->priv->phase == GSM_MANAGER_PHASE_END_SESSION) { +        } else if (priv->phase == GSM_MANAGER_PHASE_END_SESSION) {                  if (do_last) {                          /* This only makes sense if we're in part 1 of                           * GSM_MANAGER_PHASE_END_SESSION. Doing this in part 2                           * can only happen because of a buggy client that loops                           * wanting to be last again and again. The phase                           * timeout will take care of this issue. */ -                        manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients, -                                                                             client); +                        priv->next_query_clients = g_slist_prepend (priv->next_query_clients, +                                                                    client);                  }                  /* we can continue to the next step if all clients have replied                   * and if there's no inhibitor */ -                if (manager->priv->query_clients != NULL +                if (priv->query_clients != NULL                      || gsm_manager_is_logout_inhibited (manager)) {                          return;                  } -                if (manager->priv->next_query_clients != NULL) { +                if (priv->next_query_clients != NULL) {                          do_phase_end_session_part_2 (manager);                  } else {                          end_phase (manager); @@ -2259,34 +2364,37 @@ static void  gsm_manager_set_client_store (GsmManager *manager,                                GsmStore   *store)  { +        GsmManagerPrivate *priv; +          g_return_if_fail (GSM_IS_MANAGER (manager)); +        priv = gsm_manager_get_instance_private (manager);          if (store != NULL) {                  g_object_ref (store);          } -        if (manager->priv->clients != NULL) { -                g_signal_handlers_disconnect_by_func (manager->priv->clients, +        if (priv->clients != NULL) { +                g_signal_handlers_disconnect_by_func (priv->clients,                                                        on_store_client_added,                                                        manager); -                g_signal_handlers_disconnect_by_func (manager->priv->clients, +                g_signal_handlers_disconnect_by_func (priv->clients,                                                        on_store_client_removed,                                                        manager); -                g_object_unref (manager->priv->clients); +                g_object_unref (priv->clients);          }          g_debug ("GsmManager: setting client store %p", store); -        manager->priv->clients = store; +        priv->clients = store; -        if (manager->priv->clients != NULL) { -                g_signal_connect (manager->priv->clients, +        if (priv->clients != NULL) { +                g_signal_connect (priv->clients,                                    "added",                                    G_CALLBACK (on_store_client_added),                                    manager); -                g_signal_connect (manager->priv->clients, +                g_signal_connect (priv->clients,                                    "removed",                                    G_CALLBACK (on_store_client_removed),                                    manager); @@ -2323,15 +2431,17 @@ gsm_manager_get_property (GObject    *object,                            GParamSpec *pspec)  {          GsmManager *self; +        GsmManagerPrivate *priv;          self = GSM_MANAGER (object); +        priv = gsm_manager_get_instance_private (self);          switch (prop_id) {          case PROP_FAILSAFE: -                g_value_set_boolean (value, self->priv->failsafe); +                g_value_set_boolean (value, priv->failsafe);                  break;          case PROP_CLIENT_STORE: -                g_value_set_object (value, self->priv->clients); +                g_value_set_object (value, priv->clients);                  break;          default:                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -2383,56 +2493,59 @@ on_store_inhibitor_removed (GsmStore   *store,  static void  gsm_manager_dispose (GObject *object)  { +        GsmManagerPrivate *priv;          GsmManager *manager = GSM_MANAGER (object);          g_debug ("GsmManager: disposing manager"); -        if (manager->priv->clients != NULL) { -                g_signal_handlers_disconnect_by_func (manager->priv->clients, +        priv = gsm_manager_get_instance_private (manager); + +        if (priv->clients != NULL) { +                g_signal_handlers_disconnect_by_func (priv->clients,                                                        on_store_client_added,                                                        manager); -                g_signal_handlers_disconnect_by_func (manager->priv->clients, +                g_signal_handlers_disconnect_by_func (priv->clients,                                                        on_store_client_removed,                                                        manager); -                g_object_unref (manager->priv->clients); -                manager->priv->clients = NULL; +                g_object_unref (priv->clients); +                priv->clients = NULL;          } -        if (manager->priv->apps != NULL) { -                g_object_unref (manager->priv->apps); -                manager->priv->apps = NULL; +        if (priv->apps != NULL) { +                g_object_unref (priv->apps); +                priv->apps = NULL;          } -        if (manager->priv->inhibitors != NULL) { -                g_signal_handlers_disconnect_by_func (manager->priv->inhibitors, +        if (priv->inhibitors != NULL) { +                g_signal_handlers_disconnect_by_func (priv->inhibitors,                                                        on_store_inhibitor_added,                                                        manager); -                g_signal_handlers_disconnect_by_func (manager->priv->inhibitors, +                g_signal_handlers_disconnect_by_func (priv->inhibitors,                                                        on_store_inhibitor_removed,                                                        manager); -                g_object_unref (manager->priv->inhibitors); -                manager->priv->inhibitors = NULL; +                g_object_unref (priv->inhibitors); +                priv->inhibitors = NULL;          } -        if (manager->priv->presence != NULL) { -                g_object_unref (manager->priv->presence); -                manager->priv->presence = NULL; +        if (priv->presence != NULL) { +                g_object_unref (priv->presence); +                priv->presence = NULL;          } -        if (manager->priv->settings_session) { -                g_object_unref (manager->priv->settings_session); -                manager->priv->settings_session = NULL; +        if (priv->settings_session) { +                g_object_unref (priv->settings_session); +                priv->settings_session = NULL;          } -        if (manager->priv->settings_lockdown) { -                g_object_unref (manager->priv->settings_lockdown); -                manager->priv->settings_lockdown = NULL; +        if (priv->settings_lockdown) { +                g_object_unref (priv->settings_lockdown); +                priv->settings_lockdown = NULL;          } -        if (manager->priv->settings_screensaver) { -                g_object_unref (manager->priv->settings_screensaver); -                manager->priv->settings_screensaver = NULL; +        if (priv->settings_screensaver) { +                g_object_unref (priv->settings_screensaver); +                priv->settings_screensaver = NULL;          }          G_OBJECT_CLASS (gsm_manager_parent_class)->dispose (object);  } @@ -2535,8 +2648,6 @@ gsm_manager_class_init (GsmManagerClass *klass)                                                                GSM_TYPE_STORE,                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -        g_type_class_add_private (klass, sizeof (GsmManagerPrivate)); -          dbus_g_object_type_install_info (GSM_TYPE_MANAGER, &dbus_glib_gsm_manager_object_info);          dbus_g_error_domain_register (GSM_MANAGER_ERROR, NULL, GSM_MANAGER_TYPE_ERROR);  } @@ -2545,9 +2656,12 @@ static void  load_idle_delay_from_gsettings (GsmManager *manager)  {          glong   value; -        value = g_settings_get_int (manager->priv->settings_session, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        value = g_settings_get_int (priv->settings_session,                                      KEY_IDLE_DELAY); -        gsm_presence_set_idle_timeout (manager->priv->presence, value * 60000); +        gsm_presence_set_idle_timeout (priv->presence, value * 60000);  }  static void @@ -2555,10 +2669,13 @@ on_gsettings_key_changed (GSettings   *settings,                            gchar       *key,                            GsmManager  *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          if (g_strcmp0 (key, KEY_IDLE_DELAY) == 0) {                  int delay;                  delay = g_settings_get_int (settings, key); -                gsm_presence_set_idle_timeout (manager->priv->presence, delay * 60000); +                gsm_presence_set_idle_timeout (priv->presence, delay * 60000);          } else if (g_strcmp0 (key, KEY_LOCK_DISABLE) == 0) {                  /* ??? */                  gboolean UNUSED_VARIABLE disabled; @@ -2603,11 +2720,12 @@ gsm_manager_init (GsmManager *manager)          const char * const *schemas;          gboolean schema_exists;          guint i; +        GsmManagerPrivate *priv; -        manager->priv = GSM_MANAGER_GET_PRIVATE (manager); +        priv = gsm_manager_get_instance_private (manager); -        manager->priv->settings_session = g_settings_new (SESSION_SCHEMA); -        manager->priv->settings_lockdown = g_settings_new (LOCKDOWN_SCHEMA); +        priv->settings_session = g_settings_new (SESSION_SCHEMA); +        priv->settings_lockdown = g_settings_new (LOCKDOWN_SCHEMA);          /* check if mate-screensaver is installed */          schemas = g_settings_list_schemas (); @@ -2619,32 +2737,32 @@ gsm_manager_init (GsmManager *manager)                  }          }          if (schema_exists == TRUE) -                manager->priv->settings_screensaver = g_settings_new (SCREENSAVER_SCHEMA); +                priv->settings_screensaver = g_settings_new (SCREENSAVER_SCHEMA);          else -                manager->priv->settings_screensaver = NULL; +                priv->settings_screensaver = NULL; -        manager->priv->inhibitors = gsm_store_new (); -        g_signal_connect (manager->priv->inhibitors, +        priv->inhibitors = gsm_store_new (); +        g_signal_connect (priv->inhibitors,                            "added",                            G_CALLBACK (on_store_inhibitor_added),                            manager); -        g_signal_connect (manager->priv->inhibitors, +        g_signal_connect (priv->inhibitors,                            "removed",                            G_CALLBACK (on_store_inhibitor_removed),                            manager); -        manager->priv->apps = gsm_store_new (); +        priv->apps = gsm_store_new (); -        manager->priv->presence = gsm_presence_new (); -        g_signal_connect (manager->priv->presence, +        priv->presence = gsm_presence_new (); +        g_signal_connect (priv->presence,                            "status-changed",                            G_CALLBACK (on_presence_status_changed),                            manager); -        g_signal_connect (manager->priv->settings_session, +        g_signal_connect (priv->settings_session,                            "changed",                            G_CALLBACK (on_gsettings_key_changed),                            manager); -        g_signal_connect (manager->priv->settings_lockdown, +        g_signal_connect (priv->settings_lockdown,                            "changed",                            G_CALLBACK (on_gsettings_key_changed),                            manager); @@ -2656,13 +2774,15 @@ static void  gsm_manager_finalize (GObject *object)  {          GsmManager *manager; +        GsmManagerPrivate *priv;          g_return_if_fail (object != NULL);          g_return_if_fail (GSM_IS_MANAGER (object));          manager = GSM_MANAGER (object); +        priv = gsm_manager_get_instance_private (manager); -        g_return_if_fail (manager->priv != NULL); +        g_return_if_fail (priv != NULL);          G_OBJECT_CLASS (gsm_manager_parent_class)->finalize (object);  } @@ -2699,9 +2819,12 @@ gsm_manager_setenv (GsmManager  *manager,                      const char  *value,                      GError     **error)  { +        GsmManagerPrivate *priv; +          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase > GSM_MANAGER_PHASE_INITIALIZATION) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase > GSM_MANAGER_PHASE_INITIALIZATION) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_INITIALIZATION, @@ -2720,9 +2843,12 @@ gsm_manager_initialization_error (GsmManager  *manager,                                    gboolean     fatal,                                    GError     **error)  { +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase > GSM_MANAGER_PHASE_INITIALIZATION) { +        priv = gsm_manager_get_instance_private (manager); + +        if (priv->phase > GSM_MANAGER_PHASE_INITIALIZATION) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_INITIALIZATION, @@ -2739,12 +2865,15 @@ static gboolean  gsm_manager_is_switch_user_inhibited (GsmManager *manager)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv; -        if (manager->priv->inhibitors == NULL) { +        priv = gsm_manager_get_instance_private (manager); + +        if (priv->inhibitors == NULL) {                  return FALSE;          } -        inhibitor = (GsmInhibitor *)gsm_store_find (manager->priv->inhibitors, +        inhibitor = (GsmInhibitor *)gsm_store_find (priv->inhibitors,                                                      (GsmStoreFunc)inhibitor_has_flag,                                                      GUINT_TO_POINTER (GSM_INHIBITOR_FLAG_SWITCH_USER));          if (inhibitor == NULL) { @@ -2757,12 +2886,15 @@ static gboolean  gsm_manager_is_suspend_inhibited (GsmManager *manager)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); -        if (manager->priv->inhibitors == NULL) { +        if (priv->inhibitors == NULL) {                  return FALSE;          } -        inhibitor = (GsmInhibitor *)gsm_store_find (manager->priv->inhibitors, +        inhibitor = (GsmInhibitor *)gsm_store_find (priv->inhibitors,                                                      (GsmStoreFunc)inhibitor_has_flag,                                                      GUINT_TO_POINTER (GSM_INHIBITOR_FLAG_SUSPEND));          if (inhibitor == NULL) { @@ -2778,6 +2910,9 @@ request_reboot_privileges_completed_consolekit (GsmConsolekit *consolekit,                                                  GError        *error,                                                  GsmManager    *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* make sure we disconnect the signal handler so that it's not called           * again next time the event is fired -- this can happen if the reboot           * is cancelled. */ @@ -2789,9 +2924,9 @@ request_reboot_privileges_completed_consolekit (GsmConsolekit *consolekit,          if (success) {                  if (ask_later) { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_INTERACT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_INTERACT;                  } else { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT;                  }                  end_phase (manager); @@ -2806,6 +2941,9 @@ request_reboot_privileges_completed_systemd (GsmSystemd *systemd,                                               GError     *error,                                               GsmManager *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* make sure we disconnect the signal handler so that it's not called           * again next time the event is fired -- this can happen if the reboot           * is cancelled. */ @@ -2817,9 +2955,9 @@ request_reboot_privileges_completed_systemd (GsmSystemd *systemd,          if (success) {                  if (ask_later) { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_INTERACT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_INTERACT;                  } else { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT;                  }                  end_phase (manager); @@ -2835,9 +2973,12 @@ request_reboot (GsmManager *manager)          GsmSystemd *systemd;  #endif          gboolean       success; +        GsmManagerPrivate *priv;          g_debug ("GsmManager: requesting reboot"); +        priv = gsm_manager_get_instance_private (manager); +          /* We request the privileges before doing anything. There are a few           * different cases here:           * @@ -2875,7 +3016,7 @@ request_reboot (GsmManager *manager)                                                                manager);                          g_object_unref (systemd); -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_MDM; +                        priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_MDM;                          end_phase (manager);                  }          } @@ -2894,7 +3035,7 @@ request_reboot (GsmManager *manager)                                                        manager);                  g_object_unref (consolekit); -                manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_MDM; +                priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_MDM;                  end_phase (manager);          }  #ifdef HAVE_SYSTEMD @@ -2909,6 +3050,9 @@ request_shutdown_privileges_completed_consolekit (GsmConsolekit *consolekit,                                                    GError        *error,                                                    GsmManager    *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* make sure we disconnect the signal handler so that it's not called           * again next time the event is fired -- this can happen if the reboot           * is cancelled. */ @@ -2920,9 +3064,9 @@ request_shutdown_privileges_completed_consolekit (GsmConsolekit *consolekit,          if (success) {                  if (ask_later) { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT;                  } else { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN; +                        priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN;                  }                  end_phase (manager); @@ -2937,6 +3081,9 @@ request_shutdown_privileges_completed_systemd (GsmSystemd *systemd,                                                 GError     *error,                                                 GsmManager *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* make sure we disconnect the signal handler so that it's not called           * again next time the event is fired -- this can happen if the reboot           * is cancelled. */ @@ -2948,9 +3095,9 @@ request_shutdown_privileges_completed_systemd (GsmSystemd *systemd,          if (success) {                  if (ask_later) { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT; +                        priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT;                  } else { -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN; +                        priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN;                  }                  end_phase (manager); @@ -2966,9 +3113,12 @@ request_shutdown (GsmManager *manager)          GsmSystemd *systemd;  #endif          gboolean       success; +        GsmManagerPrivate *priv;          g_debug ("GsmManager: requesting shutdown"); +        priv = gsm_manager_get_instance_private (manager); +          /* See the comment in request_reboot() for some more details about how           * this works. */ @@ -2987,7 +3137,7 @@ request_shutdown (GsmManager *manager)                                                                manager);                          g_object_unref (systemd); -                        manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_MDM; +                        priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_MDM;                          end_phase (manager);                  }          } @@ -3006,7 +3156,7 @@ request_shutdown (GsmManager *manager)                                                        manager);                  g_object_unref (consolekit); -                manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_MDM; +                priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_MDM;                  end_phase (manager);          }  #ifdef HAVE_SYSTEMD @@ -3017,6 +3167,8 @@ request_shutdown (GsmManager *manager)  static void  request_suspend (GsmManager *manager)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: requesting suspend");          if (! gsm_manager_is_suspend_inhibited (manager)) { @@ -3024,26 +3176,29 @@ request_suspend (GsmManager *manager)                  return;          } -        if (manager->priv->inhibit_dialog != NULL) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->inhibit_dialog != NULL) {                  g_debug ("GsmManager: inhibit dialog already up"); -                gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog)); +                gtk_window_present (GTK_WINDOW (priv->inhibit_dialog));                  return;          } -        manager->priv->inhibit_dialog = gsm_inhibit_dialog_new (manager->priv->inhibitors, -                                                                manager->priv->clients, -                                                                GSM_LOGOUT_ACTION_SLEEP); +        priv->inhibit_dialog = gsm_inhibit_dialog_new (priv->inhibitors, +                                                       priv->clients, +                                                       GSM_LOGOUT_ACTION_SLEEP); -        g_signal_connect (manager->priv->inhibit_dialog, +        g_signal_connect (priv->inhibit_dialog,                            "response",                            G_CALLBACK (inhibit_dialog_response),                            manager); -        gtk_widget_show (manager->priv->inhibit_dialog); +        gtk_widget_show (priv->inhibit_dialog);  }  static void  request_hibernate (GsmManager *manager)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: requesting hibernate");          /* hibernate uses suspend inhibit */ @@ -3052,21 +3207,22 @@ request_hibernate (GsmManager *manager)                  return;          } -        if (manager->priv->inhibit_dialog != NULL) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->inhibit_dialog != NULL) {                  g_debug ("GsmManager: inhibit dialog already up"); -                gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog)); +                gtk_window_present (GTK_WINDOW (priv->inhibit_dialog));                  return;          } -        manager->priv->inhibit_dialog = gsm_inhibit_dialog_new (manager->priv->inhibitors, -                                                                manager->priv->clients, -                                                                GSM_LOGOUT_ACTION_HIBERNATE); +        priv->inhibit_dialog = gsm_inhibit_dialog_new (priv->inhibitors, +                                                       priv->clients, +                                                       GSM_LOGOUT_ACTION_HIBERNATE); -        g_signal_connect (manager->priv->inhibit_dialog, +        g_signal_connect (priv->inhibit_dialog,                            "response",                            G_CALLBACK (inhibit_dialog_response),                            manager); -        gtk_widget_show (manager->priv->inhibit_dialog); +        gtk_widget_show (priv->inhibit_dialog);  } @@ -3074,10 +3230,14 @@ static void  request_logout (GsmManager            *manager,                  GsmManagerLogoutMode  mode)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: requesting logout"); -        manager->priv->logout_mode = mode; -        manager->priv->logout_type = GSM_MANAGER_LOGOUT_LOGOUT; +        priv = gsm_manager_get_instance_private (manager); + +        priv->logout_mode = mode; +        priv->logout_type = GSM_MANAGER_LOGOUT_LOGOUT;          end_phase (manager);  } @@ -3085,6 +3245,8 @@ request_logout (GsmManager            *manager,  static void  request_switch_user (GsmManager *manager)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: requesting user switch");          /* See comment in manager_switch_user() to understand why we do this in @@ -3099,21 +3261,22 @@ request_switch_user (GsmManager *manager)                  return;          } -        if (manager->priv->inhibit_dialog != NULL) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->inhibit_dialog != NULL) {                  g_debug ("GsmManager: inhibit dialog already up"); -                gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog)); +                gtk_window_present (GTK_WINDOW (priv->inhibit_dialog));                  return;          } -        manager->priv->inhibit_dialog = gsm_inhibit_dialog_new (manager->priv->inhibitors, -                                                                manager->priv->clients, -                                                                GSM_LOGOUT_ACTION_SWITCH_USER); +        priv->inhibit_dialog = gsm_inhibit_dialog_new (priv->inhibitors, +                                                       priv->clients, +                                                       GSM_LOGOUT_ACTION_SWITCH_USER); -        g_signal_connect (manager->priv->inhibit_dialog, +        g_signal_connect (priv->inhibit_dialog,                            "response",                            G_CALLBACK (inhibit_dialog_response),                            manager); -        gtk_widget_show (manager->priv->inhibit_dialog); +        gtk_widget_show (priv->inhibit_dialog);  }  static void @@ -3121,10 +3284,13 @@ logout_dialog_response (GsmLogoutDialog *logout_dialog,                          guint            response_id,                          GsmManager      *manager)  { +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager);          /* We should only be here if mode has already have been set from           * show_fallback_shutdown/logout_dialog           */ -        g_assert (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_NORMAL); +        g_assert (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_NORMAL);          g_debug ("GsmManager: Logout dialog response: %d", response_id); @@ -3173,13 +3339,15 @@ static void  show_shutdown_dialog (GsmManager *manager)  {          GtkWidget *dialog; +        GsmManagerPrivate *priv; -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  /* Already shutting down, nothing more to do */                  return;          } -        manager->priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL; +        priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL;          dialog = gsm_get_shutdown_dialog (gdk_screen_get_default (),                                            gtk_get_current_event_time ()); @@ -3197,13 +3365,15 @@ static void  show_logout_dialog (GsmManager *manager)  {          GtkWidget *dialog; +        GsmManagerPrivate *priv; -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  /* Already shutting down, nothing more to do */                  return;          } -        manager->priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL; +        priv->logout_mode = GSM_MANAGER_LOGOUT_MODE_NORMAL;          dialog = gsm_get_logout_dialog (gdk_screen_get_default (),                                          gtk_get_current_event_time ()); @@ -3222,14 +3392,17 @@ user_logout (GsmManager           *manager,               GsmManagerLogoutMode  mode)  {          gboolean logout_prompt; +        GsmManagerPrivate *priv; -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        priv = gsm_manager_get_instance_private (manager); + +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  /* Already shutting down, nothing more to do */                  return;          }          logout_prompt = -               g_settings_get_boolean (manager->priv->settings_session, +               g_settings_get_boolean (priv->settings_session,                                         "logout-prompt");          /* If the shell isn't running, and this isn't a non-interative logout request, @@ -3254,8 +3427,12 @@ gboolean  gsm_manager_set_phase (GsmManager      *manager,                         GsmManagerPhase  phase)  { +        GsmManagerPrivate *priv; +          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        manager->priv->phase = phase; + +        priv = gsm_manager_get_instance_private (manager); +        priv->phase = phase;          return (TRUE);  } @@ -3263,11 +3440,13 @@ gboolean  gsm_manager_request_shutdown (GsmManager *manager,                                GError    **error)  { +        GsmManagerPrivate *priv;          g_debug ("GsmManager: RequestShutdown called");          g_return_val_if_fail(GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase != GSM_MANAGER_PHASE_RUNNING) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_RUNNING, @@ -3284,11 +3463,14 @@ gboolean  gsm_manager_request_reboot (GsmManager *manager,                              GError    **error)  { +        GsmManagerPrivate *priv; +          g_debug ("GsmManager: RequestReboot called");          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase != GSM_MANAGER_PHASE_RUNNING) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_RUNNING, @@ -3304,14 +3486,21 @@ gsm_manager_request_reboot (GsmManager *manager,  static gboolean  _log_out_is_locked_down (GsmManager *manager)  { -        return g_settings_get_boolean (manager->priv->settings_lockdown, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); + +        return g_settings_get_boolean (priv->settings_lockdown,                                         KEY_LOG_OUT_DISABLE);  }  static gboolean  _switch_user_is_locked_down (GsmManager *manager)  { -        return g_settings_get_boolean (manager->priv->settings_lockdown, +        GsmManagerPrivate *priv; + +        priv = gsm_manager_get_instance_private (manager); +        return g_settings_get_boolean (priv->settings_lockdown,                                         KEY_USER_SWITCH_DISABLE);  } @@ -3319,11 +3508,13 @@ gboolean  gsm_manager_shutdown (GsmManager *manager,                        GError    **error)  { +        GsmManagerPrivate *priv;          g_debug ("GsmManager: Shutdown called");          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase != GSM_MANAGER_PHASE_RUNNING) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_RUNNING, @@ -3387,11 +3578,13 @@ gsm_manager_logout (GsmManager *manager,                      guint       logout_mode,                      GError    **error)  { +        GsmManagerPrivate *priv;          g_debug ("GsmManager: Logout called");          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase != GSM_MANAGER_PHASE_RUNNING) {                  g_set_error (error,                               GSM_MANAGER_ERROR,                               GSM_MANAGER_ERROR_NOT_IN_RUNNING, @@ -3437,6 +3630,7 @@ gsm_manager_register_client (GsmManager            *manager,          char      *sender;          GsmClient *client;          GsmApp    *app; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); @@ -3445,7 +3639,8 @@ gsm_manager_register_client (GsmManager            *manager,          g_debug ("GsmManager: RegisterClient %s", startup_id); -        if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION) {                  GError *new_error;                  g_debug ("Unable to register client: shutting down"); @@ -3462,7 +3657,7 @@ gsm_manager_register_client (GsmManager            *manager,                  new_startup_id = gsm_util_generate_startup_id ();          } else { -                client = (GsmClient *)gsm_store_find (manager->priv->clients, +                client = (GsmClient *)gsm_store_find (priv->clients,                                                        (GsmStoreFunc)_client_has_startup_id,                                                        (char *)startup_id);                  /* We can't have two clients with the same startup id. */ @@ -3508,7 +3703,7 @@ gsm_manager_register_client (GsmManager            *manager,                  return FALSE;          } -        gsm_store_add (manager->priv->clients, gsm_client_peek_id (client), G_OBJECT (client)); +        gsm_store_add (priv->clients, gsm_client_peek_id (client), G_OBJECT (client));          /* the store will own the ref */          g_object_unref (client); @@ -3537,12 +3732,14 @@ gsm_manager_unregister_client (GsmManager            *manager,                                 DBusGMethodInvocation *context)  {          GsmClient *client; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);          g_debug ("GsmManager: UnregisterClient %s", client_id); -        client = (GsmClient *)gsm_store_lookup (manager->priv->clients, client_id); +        priv = gsm_manager_get_instance_private (manager); +        client = (GsmClient *)gsm_store_lookup (priv->clients, client_id);          if (client == NULL) {                  GError *new_error; @@ -3575,6 +3772,7 @@ gsm_manager_inhibit (GsmManager            *manager,  {          GsmInhibitor *inhibitor;          guint         cookie; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); @@ -3584,7 +3782,8 @@ gsm_manager_inhibit (GsmManager            *manager,                   reason,                   flags); -        if (manager->priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) {                  GError *new_error;                  new_error = g_error_new (GSM_MANAGER_ERROR, @@ -3639,7 +3838,7 @@ gsm_manager_inhibit (GsmManager            *manager,                                         reason,                                         dbus_g_method_get_sender (context),                                         cookie); -        gsm_store_add (manager->priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor)); +        gsm_store_add (priv->inhibitors, gsm_inhibitor_peek_id (inhibitor), G_OBJECT (inhibitor));          g_object_unref (inhibitor);          dbus_g_method_return (context, cookie); @@ -3653,12 +3852,14 @@ gsm_manager_uninhibit (GsmManager            *manager,                         DBusGMethodInvocation *context)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);          g_debug ("GsmManager: Uninhibit %u", cookie); -        inhibitor = (GsmInhibitor *)gsm_store_find (manager->priv->inhibitors, +        priv = gsm_manager_get_instance_private (manager); +        inhibitor = (GsmInhibitor *)gsm_store_find (priv->inhibitors,                                                      (GsmStoreFunc)_find_by_cookie,                                                      &cookie);          if (inhibitor == NULL) { @@ -3680,7 +3881,7 @@ gsm_manager_uninhibit (GsmManager            *manager,                   gsm_inhibitor_peek_flags (inhibitor),                   gsm_inhibitor_peek_bus_name (inhibitor)); -        gsm_store_remove (manager->priv->inhibitors, gsm_inhibitor_peek_id (inhibitor)); +        gsm_store_remove (priv->inhibitors, gsm_inhibitor_peek_id (inhibitor));          dbus_g_method_return (context); @@ -3694,16 +3895,18 @@ gsm_manager_is_inhibited (GsmManager *manager,                            GError     *error)  {          GsmInhibitor *inhibitor; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        if (manager->priv->inhibitors == NULL -            || gsm_store_size (manager->priv->inhibitors) == 0) { +        priv = gsm_manager_get_instance_private (manager); +        if (priv->inhibitors == NULL +            || gsm_store_size (priv->inhibitors) == 0) {                  *is_inhibited = FALSE;                  return TRUE;          } -        inhibitor = (GsmInhibitor *) gsm_store_find (manager->priv->inhibitors, +        inhibitor = (GsmInhibitor *) gsm_store_find (priv->inhibitors,                                                       (GsmStoreFunc)inhibitor_has_flag,                                                       GUINT_TO_POINTER (flags));          if (inhibitor == NULL) { @@ -3730,6 +3933,7 @@ gsm_manager_get_clients (GsmManager *manager,                           GPtrArray **clients,                           GError    **error)  { +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);          if (clients == NULL) { @@ -3737,7 +3941,8 @@ gsm_manager_get_clients (GsmManager *manager,          }          *clients = g_ptr_array_new (); -        gsm_store_foreach (manager->priv->clients, (GsmStoreFunc)listify_store_ids, clients); +        priv = gsm_manager_get_instance_private (manager); +        gsm_store_foreach (priv->clients, (GsmStoreFunc)listify_store_ids, clients);          return TRUE;  } @@ -3747,6 +3952,8 @@ gsm_manager_get_inhibitors (GsmManager *manager,                              GPtrArray **inhibitors,                              GError    **error)  { +        GsmManagerPrivate *priv; +          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);          if (inhibitors == NULL) { @@ -3754,7 +3961,8 @@ gsm_manager_get_inhibitors (GsmManager *manager,          }          *inhibitors = g_ptr_array_new (); -        gsm_store_foreach (manager->priv->inhibitors, +        priv = gsm_manager_get_instance_private (manager); +        gsm_store_foreach (priv->inhibitors,                             (GsmStoreFunc) listify_store_ids,                             inhibitors); @@ -3783,10 +3991,12 @@ gsm_manager_is_autostart_condition_handled (GsmManager *manager,                                              GError    **error)  {          GsmApp *app; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        app = (GsmApp *) gsm_store_find (manager->priv->apps,( +        priv = gsm_manager_get_instance_private (manager); +        app = (GsmApp *) gsm_store_find (priv->apps,(                                           GsmStoreFunc) _app_has_autostart_condition,                                           (char *)condition); @@ -3806,6 +4016,7 @@ append_app (GsmManager *manager,          const char *id;          const char *app_id;          GsmApp     *dup; +        GsmManagerPrivate *priv;          id = gsm_app_peek_id (app);          if (IS_STRING_EMPTY (id)) { @@ -3813,7 +4024,8 @@ append_app (GsmManager *manager,                  return;          } -        dup = (GsmApp *)gsm_store_lookup (manager->priv->apps, id); +        priv = gsm_manager_get_instance_private (manager); +        dup = (GsmApp *)gsm_store_lookup (priv->apps, id);          if (dup != NULL) {                  g_debug ("GsmManager: not adding app: already added");                  return; @@ -3831,7 +4043,7 @@ append_app (GsmManager *manager,                  return;          } -        gsm_store_add (manager->priv->apps, id, G_OBJECT (app)); +        gsm_store_add (priv->apps, id, G_OBJECT (app));  }  gboolean @@ -3840,15 +4052,17 @@ gsm_manager_add_autostart_app (GsmManager *manager,                                 const char *provides)  {          GsmApp *app; +        GsmManagerPrivate *priv;          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);          g_return_val_if_fail (path != NULL, FALSE); +        priv = gsm_manager_get_instance_private (manager);          /* first check to see if service is already provided */          if (provides != NULL) {                  GsmApp *dup; -                dup = (GsmApp *)gsm_store_find (manager->priv->apps, +                dup = (GsmApp *)gsm_store_find (priv->apps,                                                  (GsmStoreFunc)_find_app_provides,                                                  (char *)provides);                  if (dup != NULL) { @@ -3909,8 +4123,11 @@ gsm_manager_is_session_running (GsmManager *manager,                                  gboolean *running,                                  GError **error)  { +        GsmManagerPrivate *priv; +          g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -        *running = (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING); +        priv = gsm_manager_get_instance_private (manager); +        *running = (priv->phase == GSM_MANAGER_PHASE_RUNNING);          return TRUE;  } diff --git a/mate-session/gsm-manager.h b/mate-session/gsm-manager.h index 4422f59..73e637e 100644 --- a/mate-session/gsm-manager.h +++ b/mate-session/gsm-manager.h @@ -27,26 +27,12 @@  #include "gsm-store.h" -#ifdef __cplusplus -extern "C" { -#endif +G_BEGIN_DECLS  #define GSM_TYPE_MANAGER         (gsm_manager_get_type ()) -#define GSM_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_MANAGER, GsmManager)) -#define GSM_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_MANAGER, GsmManagerClass)) -#define GSM_IS_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_MANAGER)) -#define GSM_IS_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_MANAGER)) -#define GSM_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_MANAGER, GsmManagerClass)) +G_DECLARE_DERIVABLE_TYPE (GsmManager, gsm_manager, GSM, MANAGER, GObject) -typedef struct GsmManagerPrivate GsmManagerPrivate; - -typedef struct -{ -        GObject            parent; -        GsmManagerPrivate *priv; -} GsmManager; - -typedef struct +struct _GsmManagerClass  {          GObjectClass   parent_class; @@ -65,7 +51,7 @@ typedef struct                                                 const char      *id);          void          (* inhibitor_removed)   (GsmManager      *manager,                                                 const char      *id); -} GsmManagerClass; +}; //GsmManagerClass;  typedef enum {          /* gsm's own startup/initialization phase */ @@ -112,7 +98,6 @@ GType               gsm_manager_error_get_type                 (void);  #define GSM_MANAGER_TYPE_ERROR (gsm_manager_error_get_type ())  GQuark              gsm_manager_error_quark                    (void); -GType               gsm_manager_get_type                       (void);  GsmManager *        gsm_manager_new                            (GsmStore       *client_store,                                                                  gboolean        failsafe); @@ -194,8 +179,6 @@ gboolean            gsm_manager_is_session_running             (GsmManager *mana                                                                  gboolean *running,                                                                  GError **error); -#ifdef __cplusplus -} -#endif +G_END_DECLS  #endif /* __GSM_MANAGER_H */ | 
