summaryrefslogtreecommitdiff
path: root/gdk/gdkdisplay.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-08-01 15:28:40 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-08-01 15:28:40 +0000
commite5ae081ebea69057c9e9da5175869b87b0972ed0 (patch)
treee6be8246d4b84e8cfbe2c859de97683065211344 /gdk/gdkdisplay.c
parentd202b55bc05460d36b759de33b93cfea0f9870c7 (diff)
downloadgdk-pixbuf-e5ae081ebea69057c9e9da5175869b87b0972ed0.tar.gz
Start implementing display/screen closing scheme; keep a flag for whether
Thu Aug 1 11:26:03 2002 Owen Taylor <otaylor@redhat.com> * gdk/gdkdisplay.[ch] gdk/gdkscreen.[ch] gdkinternals.h: Start implementing display/screen closing scheme; keep a flag for whether displays and screens are closed, call g_object_run_dispose(). Remove public gdk_screen_close(). * gdk/x11/gdkdisplay-x11.c gdk/x11/gdkscreen-x11.c: Add dispose() methods; move appropriate parts of the finalize there. * gdk/x11/gdkcolor-x11.c gdk/x11/gdkimage-x11.c gdk/x11/gdkmain-x11.c gdk/x11/gdkpango-x11.c gdk/x11/gdkpixmap-x11.c gdk/x11/gdkproperty-x11.c gdk/x11/gdkselection-x11.c gdk/x11/gdkwindow-x11.c: Start of making everything correctly ignore operations when a display has been closed. * gdk/x11/gdkwindow-x11.c (gdk_window_get_decorations): Handle decorations == NULL. * gdk/x11/gdkcolor-x11.c (gdk_colormap_remove): Remove unnecessary hash table creation. * gdk/x11/gdkinput.c gdk/x11/gdkinput-x11.c gdk/win32/gdkinput.c Fix up gdk_device_get_history - handle events, n_events == NULL, etc. * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle failure better. * gdk/x11/gdkselection-x11.c (gdk_selection_property_get): Handle failure better, handle data == NULL, move docs here, remove an excess round trip by asking for all selection data at once. * gdk/gdkselection.c gdk/win32/{x11,win32}/gdkselection-{x11,win32}.c gdk/{x11,win32}/gdkmain-{x11,win32}.c gdk/gdkdisplay.c: Move gdk_text_property_to_text_list(), gdk_string_to_compound_text(), gdk_display_set_sm_client_id() to display-independent part of GDK. * gdk/Makefile.am (gdk_c_sources): Sort gdkdisplay/screen.[ch] into the right place.
Diffstat (limited to 'gdk/gdkdisplay.c')
-rw-r--r--gdk/gdkdisplay.c42
1 files changed, 40 insertions, 2 deletions
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index 2351d1d54..05c929389 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -29,6 +29,7 @@
static void gdk_display_class_init (GdkDisplayClass *class);
static void gdk_display_init (GdkDisplay *display);
+static void gdk_display_dispose (GObject *object);
static void gdk_display_finalize (GObject *object);
static GObjectClass *parent_class;
@@ -67,6 +68,7 @@ gdk_display_class_init (GdkDisplayClass *class)
parent_class = g_type_class_peek_parent (class);
object_class->finalize = gdk_display_finalize;
+ object_class->dispose = gdk_display_dispose;
}
static void
@@ -82,6 +84,12 @@ gdk_display_init (GdkDisplay *display)
}
static void
+gdk_display_dispose (GObject *object)
+{
+ GdkDisplay *display = GDK_DISPLAY_OBJECT (object);
+}
+
+static void
gdk_display_finalize (GObject *object)
{
GdkDisplay *display = GDK_DISPLAY_OBJECT (object);
@@ -99,13 +107,22 @@ gdk_display_finalize (GObject *object)
* gdk_display_close:
* @display: a #GdkDisplay
*
- * Closes and cleanup the resources used by the @display
+ * Closes the connection windowing system for the given display,
+ * and cleans up associated resources.
*/
void
gdk_display_close (GdkDisplay *display)
{
g_return_if_fail (GDK_IS_DISPLAY (display));
- g_object_unref (G_OBJECT (display));
+
+ if (!display->closed)
+ {
+ display->closed = TRUE;
+
+ g_object_run_dispose (G_OBJECT (display));
+
+ g_object_unref (G_OBJECT (display));
+ }
}
/**
@@ -294,3 +311,24 @@ gdk_display_get_core_pointer (GdkDisplay *display)
{
return display->core_pointer;
}
+
+/**
+ * gdk_set_sm_client_id:
+ * @sm_client_id: the client id assigned by the session manager when the
+ * connection was opened, or %NULL to remove the property.
+ *
+ * Sets the <literal>SM_CLIENT_ID</literal> property on the application's leader window so that
+ * the window manager can save the application's state using the X11R6 ICCCM
+ * session management protocol.
+ *
+ * See the X Session Management Library documentation for more information on
+ * session management and the Inter-Client Communication Conventions Manual
+ * (ICCCM) for information on the <literal>WM_CLIENT_LEADER</literal> property.
+ * (Both documents are part of the X Window System distribution.)
+ **/
+void
+gdk_set_sm_client_id (const gchar* sm_client_id)
+{
+ gdk_display_set_sm_client_id (gdk_display_get_default (), sm_client_id);
+}
+