#ifdef HAVE_LIBSM
static void
-sc_client_set_value (MainWindow *client,
+sc_client_set_value (MainWindow *mainwin,
gchar *name,
char *type,
int num_vals,
prop.vals = vals;
proplist[0]= ∝
- SmcSetProperties ((SmcConn) client->smc_conn, 1, proplist);
+ if (mainwin->smc_conn)
+ SmcSetProperties ((SmcConn) mainwin->smc_conn, 1, proplist);
}
static void sc_die_callback (SmcConn smc_conn, SmPointer client_data)
static void sc_shutdown_cancelled_callback (SmcConn smc_conn, SmPointer client_data)
{
MainWindow *mainwin = (MainWindow *)client_data;
- SmcSaveYourselfDone ((SmcConn) mainwin->smc_conn, TRUE);
+ if (mainwin->smc_conn)
+ SmcSaveYourselfDone ((SmcConn) mainwin->smc_conn, TRUE);
}
static void sc_save_yourself_callback (SmcConn smc_conn,
gboolean fast) {
MainWindow *mainwin = (MainWindow *)client_data;
- SmcSaveYourselfDone ((SmcConn) mainwin->smc_conn, TRUE);
+ if (mainwin->smc_conn)
+ SmcSaveYourselfDone ((SmcConn) mainwin->smc_conn, TRUE);
}
static IceIOErrorHandler sc_ice_installed_handler;
if (g_getenv ("SESSION_MANAGER")) {
gchar error_string_ret[256] = "";
- mainwin->smc_conn= (gpointer)
+ mainwin->smc_conn = (gpointer)
SmcOpenConnection (NULL, mainwin,
SmProtoMajor, SmProtoMinor,
SmcSaveYourselfProcMask | SmcDieProcMask |
NULL, &client_id,
256, error_string_ret);
- if (error_string_ret[0])
+ if (error_string_ret[0] || mainwin->smc_conn == NULL)
g_warning ("While connecting to session manager:\n%s.",
error_string_ret);
else {
static void exit_sylpheed(MainWindow *mainwin)
{
gchar *filename;
-#ifdef HAVE_LIBSM
- SmcConn smc_conn = mainwin->smc_conn;
-#endif
sc_exiting = TRUE;
lock_socket_remove();
+#ifdef HAVE_LIBSM
+ if (mainwin->smc_conn)
+ SmcCloseConnection ((SmcConn)mainwin->smc_conn, 0, NULL);
+ mainwin->smc_conn = NULL;
+#endif
+
main_window_destroy_all();
plugin_unload_all("GTK2");
gtkaspell_checkers_quit();
#endif
sylpheed_done();
-#ifdef HAVE_LIBSM
- SmcCloseConnection (smc_conn, 0, NULL);
-#endif
}
static void parse_cmd_opt(int argc, char *argv[])