Add a singleton object that we can use to get notification when displays

Thu Jun 20 16:49:00 2002  Owen Taylor  <otaylor@redhat.com>

        * gdk/gdkdisplaymanager.[ch] gdk/gdk.[ch] gdk/gdkdisplay.c
        gdk/gdkinternals.h gdk/x11/gdkdisplay-x11.c
        gdk/win32/gdkdisplay-win32.c: Add a singleton object that
        we can use to get notification when displays
        appear / disappear or the default display changes.

        gdk_set_default_display() => gdk_display_manager_set_default_display()
        gdk_list_displays() => gdk_display_manager_list_displays().
        (#85696)

        * gdk/Makefile.am gdk/gdkmarshalers.list: Add marshaler
        generation.

        * gdk/gdkintl.h: Add this.

        * gtk/gtkmain.c: Add gtk_parse_args() that initializes
        GTK+ without opening a display.

        * gtk/gtkmain.c: Set things up so if a module
        exports gtk_module_init() and gtk_module_display_init(),
        then we treat it as multihead aware, otherwise,
        we only initialize it after the default display is set.
This commit is contained in:
Owen Taylor
2002-06-20 23:29:19 +00:00
committed by Owen Taylor
parent 4251a51edc
commit 5830bf89b5
21 changed files with 437 additions and 152 deletions

View File

@ -31,8 +31,6 @@ static void gdk_display_class_init (GdkDisplayClass *class);
static void gdk_display_init (GdkDisplay *display);
static void gdk_display_finalize (GObject *object);
static GdkDisplay *default_display = NULL;
static GObjectClass *parent_class;
GType
@ -90,8 +88,9 @@ gdk_display_finalize (GObject *object)
_gdk_displays = g_slist_remove (_gdk_displays, display);
if (default_display == display)
default_display = NULL;
if (gdk_get_default_display() == display)
gdk_display_manager_set_default_display (gdk_display_manager_get(),
NULL);
parent_class->finalize (object);
}
@ -109,62 +108,6 @@ gdk_display_close (GdkDisplay *display)
g_object_unref (G_OBJECT (display));
}
/**
* gdk_set_default_display:
* @display: a #GdkDisplay
*
* Sets @display as the default display.
**/
void
gdk_set_default_display (GdkDisplay *display)
{
default_display = display;
_gdk_windowing_set_default_display (display);
}
/**
* gdk_get_default_display:
*
* Gets the default #GdkDisplay.
*
* Returns: a #GdkDisplay, or %NULL if there is no default
* display.
*/
GdkDisplay *
gdk_get_default_display (void)
{
return default_display;
}
/**
* gdk_get_default_screen:
*
* Gets the default screen for the default display. (See
* gdk_get_default_display ()).
*
* Returns: a #GdkScreen.
*/
GdkScreen *
gdk_get_default_screen (void)
{
return gdk_display_get_default_screen (gdk_get_default_display ());
}
/**
* gdk_list_displays:
*
* List all currently open displays.
*
* Return value: a newly allocated #GSList of #GdkDisplay objects.
* Free this list with g_slist_free() when you are done with it.
**/
GSList *
gdk_list_displays (void)
{
return g_slist_copy (_gdk_displays);
}
/**
* gdk_display_get_event:
* @display: a #GdkDisplay