summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMichael Natterer <mitch@imendio.com>2005-11-16 12:36:22 +0000
committerMichael Natterer <mitch@src.gnome.org>2005-11-16 12:36:22 +0000
commit6e802acd48ec7d04285b91e29871bca11472213e (patch)
tree4eb244bac963fc5cd196a82eb4313679933b9139 /gdk
parenta77fd024a0b86329ca83f13116c159069a7d812c (diff)
downloadgtk+-6e802acd48ec7d04285b91e29871bca11472213e.tar.gz
new internal function which destroys the display's event source. Also
2005-11-16 Michael Natterer <mitch@imendio.com> * gdk/x11/gdkevents-x11.c (_gdk_events_uninit): new internal function which destroys the display's event source. Also removes the source from the global display_sources list and unrefs it. * gdk/x11/gdkprivate-x11.h: declare the function. * gdk/x11/gdkdisplay-x11.c (gdk_display_x11_dispose): call it instead of half-destroying the source here.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/x11/gdkdisplay-x11.c6
-rw-r--r--gdk/x11/gdkevents-x11.c14
-rw-r--r--gdk/x11/gdkprivate-x11.h1
3 files changed, 16 insertions, 5 deletions
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index b69d6a211d..62fd4bde41 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -726,11 +726,7 @@ gdk_display_x11_dispose (GObject *object)
for (i = 0; i < n_screens; i++)
_gdk_screen_close (display_x11->screens[i]);
- if (display_x11->event_source)
- {
- g_source_destroy (display_x11->event_source);
- display_x11->event_source = NULL;
- }
+ _gdk_events_uninit (GDK_DISPLAY_OBJECT (object));
G_OBJECT_CLASS (parent_class)->dispose (object);
}
diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c
index 4a06cb0dd6..42da31f6d7 100644
--- a/gdk/x11/gdkevents-x11.c
+++ b/gdk/x11/gdkevents-x11.c
@@ -230,6 +230,20 @@ _gdk_events_init (GdkDisplay *display)
NULL);
}
+void
+_gdk_events_uninit (GdkDisplay *display)
+{
+ GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
+
+ if (display_x11->event_source)
+ {
+ display_sources = g_list_remove (display_sources,
+ display_x11->event_source);
+ g_source_destroy (display_x11->event_source);
+ g_source_unref (display_x11->event_source);
+ display_x11->event_source = NULL;
+ }
+}
/**
* gdk_events_pending:
diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h
index 73f4410c32..0bd1868a05 100644
--- a/gdk/x11/gdkprivate-x11.h
+++ b/gdk/x11/gdkprivate-x11.h
@@ -170,6 +170,7 @@ void _gdk_x11_events_init_screen (GdkScreen *screen);
void _gdk_x11_events_uninit_screen (GdkScreen *screen);
void _gdk_events_init (GdkDisplay *display);
+void _gdk_events_uninit (GdkDisplay *display);
void _gdk_windowing_window_init (GdkScreen *screen);
void _gdk_visual_init (GdkScreen *screen);
void _gdk_dnd_init (GdkDisplay *display);