void meta_session_shutdown (void) { /* Change our restart mode to IfRunning */ SmProp prop1; SmPropValue prop1val; SmProp *props[1]; char hint = SmRestartIfRunning; if (!meta_get_display ()) { meta_verbose ("Cannot close session because there is no display"); return; } warn_about_lame_clients_and_finish_interact (FALSE); if (session_connection == NULL) return; prop1.name = SmRestartStyleHint; prop1.type = SmCARD8; prop1.num_vals = 1; prop1.vals = &prop1val; prop1val.value = &hint; prop1val.length = 1; props[0] = &prop1; SmcSetProperties (session_connection, 1, props); }
static void interact_callback (SmcConn smc_conn, SmPointer client_data) { /* nothing */ gboolean shutdown; meta_topic (META_DEBUG_SM, "Interaction permission received\n"); shutdown = GPOINTER_TO_INT (client_data); current_state = STATE_DONE_WITH_INTERACT; warn_about_lame_clients_and_finish_interact (shutdown); }