diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-09-10 15:19:13 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-09-10 15:19:13 +0000 |
commit | 7ddfec4f808f55a2499d3771e39d62b26d9f7555 (patch) | |
tree | afe72716187fe04d2a958869dd23f4f2e98b7d14 /gdk/linux-fb | |
parent | 44e2b53f83f6c6b8467aec4c367700c89986e938 (diff) | |
download | gtk+-7ddfec4f808f55a2499d3771e39d62b26d9f7555.tar.gz |
Patch from Eric Warmonhoven to get linux-fb compiling with multihead
Tue Sep 10 11:11:09 2002 Owen Taylor <otaylor@redhat.com>
* gdk/linux-fb/*: Patch from Eric Warmonhoven to
get linux-fb compiling with multihead changes.
Diffstat (limited to 'gdk/linux-fb')
-rw-r--r-- | gdk/linux-fb/Makefile.am | 4 | ||||
-rw-r--r-- | gdk/linux-fb/gdkcolor-fb.c | 10 | ||||
-rw-r--r-- | gdk/linux-fb/gdkcursor-fb.c | 9 | ||||
-rw-r--r-- | gdk/linux-fb/gdkdisplay-fb.c | 77 | ||||
-rw-r--r-- | gdk/linux-fb/gdkdrawable-fb2.c | 8 | ||||
-rw-r--r-- | gdk/linux-fb/gdkevents-fb.c | 30 | ||||
-rw-r--r-- | gdk/linux-fb/gdkfont-fb.c | 6 | ||||
-rw-r--r-- | gdk/linux-fb/gdkglobals-fb.c | 4 | ||||
-rw-r--r-- | gdk/linux-fb/gdkimage-fb.c | 15 | ||||
-rw-r--r-- | gdk/linux-fb/gdkinputprivate.h | 1 | ||||
-rw-r--r-- | gdk/linux-fb/gdkkeyboard-fb.c | 28 | ||||
-rw-r--r-- | gdk/linux-fb/gdkmain-fb.c | 80 | ||||
-rw-r--r-- | gdk/linux-fb/gdkmouse-fb.c | 5 | ||||
-rw-r--r-- | gdk/linux-fb/gdkpango-fb.c | 2 | ||||
-rw-r--r-- | gdk/linux-fb/gdkprivate-fb.h | 3 | ||||
-rw-r--r-- | gdk/linux-fb/gdkscreen-fb.c | 80 | ||||
-rw-r--r-- | gdk/linux-fb/gdkselection-fb.c | 67 | ||||
-rw-r--r-- | gdk/linux-fb/gdkvisual-fb.c | 12 | ||||
-rw-r--r-- | gdk/linux-fb/gdkwindow-fb.c | 18 |
19 files changed, 345 insertions, 114 deletions
diff --git a/gdk/linux-fb/Makefile.am b/gdk/linux-fb/Makefile.am index 56d9f3134a..18b0510cff 100644 --- a/gdk/linux-fb/Makefile.am +++ b/gdk/linux-fb/Makefile.am @@ -28,6 +28,7 @@ libgdk_linux_fb_la_SOURCES = \ gdkcolor-fb.c \ gdkcursor-fb.c \ gdkdnd-fb.c \ + gdkdisplay-fb.c \ gdkdrawable-fb2.c \ gdkfont-fb.c \ gdkgc-fb.c \ @@ -40,6 +41,7 @@ libgdk_linux_fb_la_SOURCES = \ gdkpixmap-fb.c \ gdkproperty-fb.c \ gdkselection-fb.c \ + gdkscreen-fb.c \ gdkvisual-fb.c \ gdkwindow-fb.c \ gdkprivate-fb.h \ @@ -73,6 +75,8 @@ libgdk_linux_fb_la_SOURCES = \ gdkfbmanager.h gdkfbmanager_sources = gdkfbmanager.c +gdkfbmanager_LDFLAGS = $(GLIB_LIBS) gdkfbswitch_sources = gdkfbswitch.c +gdkfbswitch_LDFLAGS = $(GLIB_LIBS) EXTRA_DIST=x-cursors.xbm diff --git a/gdk/linux-fb/gdkcolor-fb.c b/gdk/linux-fb/gdkcolor-fb.c index cf338ee3ba..0435bbe48f 100644 --- a/gdk/linux-fb/gdkcolor-fb.c +++ b/gdk/linux-fb/gdkcolor-fb.c @@ -202,7 +202,7 @@ gdk_colormap_new (GdkVisual *visual, } GdkColormap* -gdk_colormap_get_system (void) +gdk_screen_get_system_colormap (GdkScreen *screen) { static GdkColormap *colormap = NULL; @@ -854,3 +854,11 @@ gdk_colormap_query_color (GdkColormap *colormap, break; } } + +GdkScreen* +gdk_colormap_get_screen (GdkColormap *cmap) +{ + g_return_val_if_fail (cmap != NULL, NULL); + + return gdk_screen_get_default (); +} diff --git a/gdk/linux-fb/gdkcursor-fb.c b/gdk/linux-fb/gdkcursor-fb.c index a46f2a15d8..20b0a040f2 100644 --- a/gdk/linux-fb/gdkcursor-fb.c +++ b/gdk/linux-fb/gdkcursor-fb.c @@ -192,7 +192,8 @@ static struct { }; GdkCursor* -gdk_cursor_new (GdkCursorType cursor_type) +gdk_cursor_new_for_display (GdkDisplay *display, + GdkCursorType cursor_type) { GdkCursor *cursor; @@ -528,3 +529,9 @@ gdk_fb_cursor_reset(void) gdk_fb_mouse_get_info (&x, &y, NULL); gdk_fb_cursor_move (x, y, win); } + +GdkDisplay * +gdk_cursor_get_display (GdkCursor *cursor) +{ + return gdk_display_get_default (); +} diff --git a/gdk/linux-fb/gdkdisplay-fb.c b/gdk/linux-fb/gdkdisplay-fb.c new file mode 100644 index 0000000000..c10fcd262b --- /dev/null +++ b/gdk/linux-fb/gdkdisplay-fb.c @@ -0,0 +1,77 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#include "gdk.h" +#include "gdkprivate-fb.h" + +GdkDisplay * +gdk_display_open (const gchar *display_name) +{ + if (_gdk_display != NULL) + return NULL; /* single display only */ + + _gdk_display = g_object_new (GDK_TYPE_DISPLAY, NULL); + _gdk_screen = g_object_new (GDK_TYPE_SCREEN, NULL); + + _gdk_visual_init (); + gdk_screen_set_default_colormap (_gdk_screen, + gdk_screen_get_system_colormap (_gdk_screen)); + _gdk_windowing_window_init (); + _gdk_windowing_image_init (); + _gdk_events_init (); + _gdk_input_init (); + _gdk_dnd_init (); + + g_signal_emit_by_name (gdk_display_manager_get (), + "display_opened", _gdk_display); + + return _gdk_display; +} + +G_CONST_RETURN gchar * +gdk_display_get_name (GdkDisplay *display) +{ + return gdk_get_display_arg_name (); +} + +int +gdk_display_get_n_screens (GdkDisplay *display) +{ + return 1; +} + +GdkScreen * +gdk_display_get_screen (GdkDisplay *display, + gint screen_num) +{ + return _gdk_screen; +} + +GdkScreen * +gdk_display_get_default_screen (GdkDisplay *display) +{ + return _gdk_screen; +} diff --git a/gdk/linux-fb/gdkdrawable-fb2.c b/gdk/linux-fb/gdkdrawable-fb2.c index c44279e7c5..5696944e14 100644 --- a/gdk/linux-fb/gdkdrawable-fb2.c +++ b/gdk/linux-fb/gdkdrawable-fb2.c @@ -86,6 +86,7 @@ static GdkColormap* gdk_fb_get_colormap (GdkDrawable *drawable); static void gdk_fb_set_colormap (GdkDrawable *drawable, GdkColormap *colormap); static gint gdk_fb_get_depth (GdkDrawable *drawable); +static GdkScreen* gdk_fb_get_screen (GdkDrawable *drawable); static GdkVisual* gdk_fb_get_visual (GdkDrawable *drawable); static void gdk_fb_drawable_finalize (GObject *object); @@ -219,6 +220,7 @@ gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass) drawable_class->get_size = gdk_fb_get_size; drawable_class->get_depth = gdk_fb_get_depth; + drawable_class->get_screen = gdk_fb_get_screen; drawable_class->get_visual = gdk_fb_get_visual; drawable_class->_copy_to_image = _gdk_fb_copy_to_image; @@ -1305,6 +1307,12 @@ gdk_fb_get_depth (GdkDrawable *drawable) return GDK_DRAWABLE_FBDATA (drawable)->depth; } +static GdkScreen* +gdk_fb_get_screen (GdkDrawable *drawable) +{ + return gdk_screen_get_default(); +} + static GdkVisual* gdk_fb_get_visual (GdkDrawable *drawable) { diff --git a/gdk/linux-fb/gdkevents-fb.c b/gdk/linux-fb/gdkevents-fb.c index 321e47dc64..a067b79496 100644 --- a/gdk/linux-fb/gdkevents-fb.c +++ b/gdk/linux-fb/gdkevents-fb.c @@ -87,16 +87,17 @@ _gdk_events_init (void) gboolean gdk_events_pending (void) { - return _gdk_event_queue_find_first () ? TRUE : FALSE; + return fb_events_check (NULL); } GdkEvent* gdk_event_get_graphics_expose (GdkWindow *window) { + GdkDisplay *display = gdk_display_get_default (); GList *ltmp; g_return_val_if_fail (window != NULL, NULL); - for (ltmp = _gdk_queued_events; ltmp; ltmp = ltmp->next) + for (ltmp = display->queued_events; ltmp; ltmp = ltmp->next) { GdkEvent *event = ltmp->data; if (event->type == GDK_EXPOSE && @@ -108,7 +109,7 @@ gdk_event_get_graphics_expose (GdkWindow *window) { GdkEvent *retval = ltmp->data; - _gdk_event_queue_remove_link (ltmp); + _gdk_event_queue_remove_link (display, ltmp); g_list_free_1 (ltmp); return retval; @@ -118,7 +119,7 @@ gdk_event_get_graphics_expose (GdkWindow *window) } void -_gdk_events_queue (void) +_gdk_events_queue (GdkDisplay *display) { } @@ -138,7 +139,7 @@ fb_events_check (GSource *source) GDK_THREADS_ENTER (); - retval = (_gdk_event_queue_find_first () != NULL); + retval = (_gdk_event_queue_find_first (gdk_display_get_default ()) != NULL); GDK_THREADS_LEAVE (); @@ -154,7 +155,7 @@ fb_events_dispatch (GSource *source, GDK_THREADS_ENTER (); - while ((event = _gdk_event_unqueue ())) + while ((event = _gdk_event_unqueue (gdk_display_get_default ()))) { if (event->type == GDK_EXPOSE && event->expose.window == _gdk_parent_root) @@ -199,19 +200,28 @@ gdk_flush (void) } gboolean -gdk_event_send_client_message (GdkEvent *event, guint32 xid) +gdk_event_send_client_message_for_display (GdkDisplay *display, + GdkEvent *event, + guint32 xid) { return FALSE; } void -gdk_event_send_clientmessage_toall (GdkEvent *sev) +gdk_screen_broadcast_client_message (GdkScreen *screen, + GdkEvent *sev) { } gboolean -gdk_setting_get (const gchar *name, - GValue *value) +gdk_screen_get_setting (GdkScreen *screen, + const gchar *name, + GValue *value) { return FALSE; } + +void +gdk_display_sync (GdkDisplay *display) +{ +} diff --git a/gdk/linux-fb/gdkfont-fb.c b/gdk/linux-fb/gdkfont-fb.c index c3b35940bc..7632b4c286 100644 --- a/gdk/linux-fb/gdkfont-fb.c +++ b/gdk/linux-fb/gdkfont-fb.c @@ -87,7 +87,8 @@ gdk_font_hash_lookup (GdkFontType type, const gchar *font_name) } GdkFont* -gdk_font_from_description (PangoFontDescription *desc) +gdk_font_from_description_for_display (GdkDisplay *display, + PangoFontDescription *desc) { GdkFont *font; GdkFontPrivateFB *private; @@ -154,7 +155,8 @@ gdk_font_from_description (PangoFontDescription *desc) GdkFont* -gdk_font_load (const gchar *font_name) +gdk_font_load_for_display (GdkDisplay *display, + const gchar *font_name) { GdkFont *font; GdkFontPrivateFB *private; diff --git a/gdk/linux-fb/gdkglobals-fb.c b/gdk/linux-fb/gdkglobals-fb.c index 2dfbea545f..e84d5c652b 100644 --- a/gdk/linux-fb/gdkglobals-fb.c +++ b/gdk/linux-fb/gdkglobals-fb.c @@ -35,6 +35,10 @@ gboolean _gdk_fb_pointer_grab_owner_events; gboolean _gdk_fb_keyboard_grab_owner_events; GdkEventMask _gdk_fb_pointer_grab_events, _gdk_fb_keyboard_grab_events; +GdkDisplay *_gdk_display = NULL; +GdkScreen *_gdk_screen = NULL; +GdkWindow *_gdk_parent_root = NULL; + GdkFBWindow *gdk_root_window = NULL; GdkFBDisplay *gdk_display = NULL; GdkCursor *_gdk_fb_pointer_grab_cursor; diff --git a/gdk/linux-fb/gdkimage-fb.c b/gdk/linux-fb/gdkimage-fb.c index 7c803fa560..2bdd76265b 100644 --- a/gdk/linux-fb/gdkimage-fb.c +++ b/gdk/linux-fb/gdkimage-fb.c @@ -105,7 +105,8 @@ gdk_image_get_type (void) GdkImage* -_gdk_image_new_for_depth (GdkImageType type, +_gdk_image_new_for_depth (GdkScreen *screen, + GdkImageType type, GdkVisual *visual, gint width, gint height, @@ -171,15 +172,6 @@ gdk_image_new_bitmap(GdkVisual *visual, } GdkImage* -gdk_image_new (GdkImageType type, - GdkVisual *visual, - gint width, - gint height) -{ - return _gdk_image_new_for_depth (type, visual, width, height, -1); -} - -GdkImage* _gdk_fb_copy_to_image (GdkDrawable *drawable, GdkImage *image, gint src_x, @@ -343,7 +335,8 @@ _gdk_image_exit(void) /* copy/pasted from gdkimage-win32.c */ gint -_gdk_windowing_get_bits_for_depth (gint depth) +_gdk_windowing_get_bits_for_depth (GdkDisplay *display, + gint depth) { if ((1 == depth) || (8 == depth) || (16 == depth) || (24 == depth) || (32 == depth)) diff --git a/gdk/linux-fb/gdkinputprivate.h b/gdk/linux-fb/gdkinputprivate.h index 8ac1e1be39..fab65da1f3 100644 --- a/gdk/linux-fb/gdkinputprivate.h +++ b/gdk/linux-fb/gdkinputprivate.h @@ -126,6 +126,7 @@ struct _GdkInputWindow /* Global data */ extern const GdkDevice gdk_input_core_info; +extern GdkDevice *_gdk_core_pointer; extern GList *_gdk_input_devices; extern GList *_gdk_input_windows; diff --git a/gdk/linux-fb/gdkkeyboard-fb.c b/gdk/linux-fb/gdkkeyboard-fb.c index 0a458b91c4..79c4d7cb55 100644 --- a/gdk/linux-fb/gdkkeyboard-fb.c +++ b/gdk/linux-fb/gdkkeyboard-fb.c @@ -147,7 +147,7 @@ static GdkFBKeyboardDevice keyb_devs[] = }; GdkKeymap* -gdk_keymap_get_default (void) +gdk_keymap_get_default_for_display (GdkDisplay *display) { if (default_keymap == NULL) default_keymap = g_object_new (gdk_keymap_get_type (), NULL); @@ -155,6 +155,12 @@ gdk_keymap_get_default (void) return default_keymap; } +GdkKeymap* +gdk_keymap_get_for_display (GdkDisplay *display) +{ + return gdk_keymap_get_default_for_display (display); +} + PangoDirection gdk_keymap_get_direction (GdkKeymap *keymap) { @@ -873,8 +879,8 @@ xlate_io (GIOChannel *gioc, } static gboolean -write_string (gint fd, - gchar *str) +write_string (gint fd, + const gchar *str) { gsize to_write = strlen (str); @@ -972,8 +978,8 @@ xlate_get_for_keyval (GdkFBKeyboard *kb, gint *n_keys) { g_warning ("xlate_get_for_keyval() NIY"); - *keys=NULL; - *n_keys=0; + if (keys) *keys=NULL; + if (n_keys) *n_keys=0; return FALSE; } @@ -985,8 +991,8 @@ xlate_get_for_keycode (GdkFBKeyboard *kb, gint *n_entries) { g_warning ("xlate_get_for_keycode() NIY"); - *keys=NULL; - *n_entries=0; + if (keys) *keys=NULL; + if (n_entries) *n_entries=0; return FALSE; } @@ -1487,8 +1493,8 @@ raw_get_for_keyval (GdkFBKeyboard *kb, gint *n_keys) { g_warning ("raw_get_for_keyval() NIY"); - *keys=NULL; - *n_keys=0; + if (keys) *keys=NULL; + if (n_keys) *n_keys=0; return FALSE; } @@ -1500,7 +1506,7 @@ raw_get_for_keycode (GdkFBKeyboard *kb, gint *n_entries) { g_warning ("raw_get_for_keycode() NIY"); - *keys=NULL; - *n_entries=0; + if (keys) *keys=NULL; + if (n_entries) *n_entries=0; return FALSE; } diff --git a/gdk/linux-fb/gdkmain-fb.c b/gdk/linux-fb/gdkmain-fb.c index 5477fa7301..a731256777 100644 --- a/gdk/linux-fb/gdkmain-fb.c +++ b/gdk/linux-fb/gdkmain-fb.c @@ -799,11 +799,11 @@ gdk_fb_display_destroy (GdkFBDisplay *display) g_free (display); } -gboolean -_gdk_windowing_init_check (int argc, char **argv) +void +_gdk_windowing_init (int *argc, char ***argv) { if (gdk_initialized) - return TRUE; + return; /* Create new session and become session leader */ setsid(); @@ -811,7 +811,7 @@ _gdk_windowing_init_check (int argc, char **argv) gdk_display = gdk_fb_display_new (); if (!gdk_display) - return FALSE; + return; gdk_shadow_fb_init (); @@ -822,7 +822,7 @@ _gdk_windowing_init_check (int argc, char **argv) g_warning ("Failed to initialize keyboard"); gdk_fb_display_destroy (gdk_display); gdk_display = NULL; - return FALSE; + return; } if (!gdk_fb_mouse_init (!gdk_display->manager_blocked)) @@ -831,15 +831,18 @@ _gdk_windowing_init_check (int argc, char **argv) gdk_fb_keyboard_close (); gdk_fb_display_destroy (gdk_display); gdk_display = NULL; - return FALSE; + return; } gdk_initialized = TRUE; _gdk_selection_property = gdk_atom_intern ("GDK_SELECTION", FALSE); - - return TRUE; +} + +void +_gdk_windowing_set_default_display (GdkDisplay *display) +{ } /* @@ -933,7 +936,7 @@ gdk_fb_pointer_grab (GdkWindow * window, /* *-------------------------------------------------------------- - * gdk_pointer_ungrab + * gdk_display_pointer_ungrab * * Releases any pointer grab * @@ -947,7 +950,8 @@ gdk_fb_pointer_grab (GdkWindow * window, */ void -gdk_pointer_ungrab (guint32 time) +gdk_display_pointer_ungrab (GdkDisplay *display, + guint32 time) { gdk_fb_pointer_ungrab (time, FALSE); } @@ -993,7 +997,7 @@ gdk_fb_pointer_ungrab (guint32 time, gboolean implicit_grab) /* *-------------------------------------------------------------- - * gdk_pointer_is_grabbed + * gdk_display_pointer_is_grabbed * * Tell wether there is an active x pointer grab in effect * @@ -1007,7 +1011,7 @@ gdk_fb_pointer_ungrab (guint32 time, gboolean implicit_grab) */ gint -gdk_pointer_is_grabbed (void) +gdk_display_pointer_is_grabbed (GdkDisplay *display) { return _gdk_fb_pointer_grab_window != NULL; } @@ -1033,9 +1037,9 @@ gdk_pointer_is_grabbed (void) */ GdkGrabStatus -gdk_keyboard_grab (GdkWindow * window, - gint owner_events, - guint32 time) +gdk_keyboard_grab (GdkWindow *window, + gint owner_events, + guint32 time) { g_return_val_if_fail (window != NULL, 0); g_return_val_if_fail (GDK_IS_WINDOW (window), 0); @@ -1051,7 +1055,7 @@ gdk_keyboard_grab (GdkWindow * window, /* *-------------------------------------------------------------- - * gdk_keyboard_ungrab + * gdk_display_keyboard_ungrab * * Releases any keyboard grab * @@ -1065,7 +1069,8 @@ gdk_keyboard_grab (GdkWindow * window, */ void -gdk_keyboard_ungrab (guint32 time) +gdk_display_keyboard_ungrab (GdkDisplay *display, + guint32 time) { if (_gdk_fb_keyboard_grab_window) gdk_window_unref (_gdk_fb_keyboard_grab_window); @@ -1073,7 +1078,8 @@ gdk_keyboard_ungrab (guint32 time) } gboolean -gdk_pointer_grab_info_libgtk_only (GdkWindow **grab_window, +gdk_pointer_grab_info_libgtk_only (GdkDisplay *display, + GdkWindow **grab_window, gboolean *owner_events) { if (_gdk_fb_pointer_grab_window) @@ -1090,8 +1096,9 @@ gdk_pointer_grab_info_libgtk_only (GdkWindow **grab_window, } gboolean -gdk_keyboard_grab_info_libgtk_only (GdkWindow **grab_window, - gboolean *owner_events) +gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display, + GdkWindow **grab_window, + gboolean *owner_events) { if (_gdk_fb_keyboard_grab_window) { @@ -1109,7 +1116,7 @@ gdk_keyboard_grab_info_libgtk_only (GdkWindow **grab_window, /* *-------------------------------------------------------------- - * gdk_screen_width + * gdk_screen_get_width * * Return the width of the screen. * @@ -1123,14 +1130,14 @@ gdk_keyboard_grab_info_libgtk_only (GdkWindow **grab_window, */ gint -gdk_screen_width (void) +gdk_screen_get_width (GdkScreen *screen) { return gdk_display->fb_width; } /* *-------------------------------------------------------------- - * gdk_screen_height + * gdk_screen_get_height * * Return the height of the screen. * @@ -1144,14 +1151,14 @@ gdk_screen_width (void) */ gint -gdk_screen_height (void) +gdk_screen_get_height (GdkScreen *screen) { return gdk_display->fb_height; } /* *-------------------------------------------------------------- - * gdk_screen_width_mm + * gdk_screen_get_width_mm * * Return the width of the screen in millimeters. * @@ -1165,14 +1172,14 @@ gdk_screen_height (void) */ gint -gdk_screen_width_mm (void) +gdk_screen_get_width_mm (GdkScreen *screen) { return 0.5 + gdk_screen_width () * (25.4 / 72.); } /* *-------------------------------------------------------------- - * gdk_screen_height + * gdk_screen_get_height_mm * * Return the height of the screen in millimeters. * @@ -1186,14 +1193,14 @@ gdk_screen_width_mm (void) */ gint -gdk_screen_height_mm (void) +gdk_screen_get_height_mm (GdkScreen *screen) { return 0.5 + gdk_screen_height () * (25.4 / 72.); } /* *-------------------------------------------------------------- - * gdk_set_sm_client_id + * gdk_display_set_sm_client_id * * Set the SM_CLIENT_ID property on the WM_CLIENT_LEADER window * so that the window manager can save our state using the @@ -1214,11 +1221,11 @@ gdk_screen_height_mm (void) */ void -gdk_set_sm_client_id (const gchar* sm_client_id) +gdk_display_set_sm_client_id (GdkDisplay* display, + const gchar* sm_client_id) { } - extern void keyboard_shutdown(void); void @@ -1260,9 +1267,8 @@ gdk_get_display(void) return g_strdup (s); } - void -gdk_beep (void) +gdk_display_beep (GdkDisplay *display) { static int pitch = 600, duration = 100; gulong arg; @@ -1326,7 +1332,7 @@ gdk_fb_other_event_window (GdkWindow *window, (g_object_get_data (G_OBJECT (w), "gdk-window-child-handler"))) break; - evmask = GDK_WINDOW_IMPL_FBDATA(window)->event_mask; + evmask = GDK_WINDOW_OBJECT(window)->event_mask; if (evmask & type_masks[type]) return w; @@ -1375,7 +1381,7 @@ gdk_fb_pointer_event_window (GdkWindow *window, (g_object_get_data (G_OBJECT (w), "gdk-window-child-handler"))) break; - evmask = GDK_WINDOW_IMPL_FBDATA(window)->event_mask; + evmask = GDK_WINDOW_OBJECT(window)->event_mask; if (evmask & (GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK)) { @@ -1433,7 +1439,7 @@ gdk_fb_keyboard_event_window (GdkWindow *window, (g_object_get_data (G_OBJECT (w), "gdk-window-child-handler"))) break; - evmask = GDK_WINDOW_IMPL_FBDATA(window)->event_mask; + evmask = GDK_WINDOW_OBJECT(window)->event_mask; if (evmask & type_masks[type]) return w; @@ -1523,7 +1529,7 @@ gdk_event_make (GdkWindow *window, } if (append_to_queue) - _gdk_event_queue_append (event); + _gdk_event_queue_append (gdk_display_get_default (), event); return event; } diff --git a/gdk/linux-fb/gdkmouse-fb.c b/gdk/linux-fb/gdkmouse-fb.c index baf1d1a511..ee6126abcb 100644 --- a/gdk/linux-fb/gdkmouse-fb.c +++ b/gdk/linux-fb/gdkmouse-fb.c @@ -20,6 +20,7 @@ #include <gdk/gdk.h> #include <gdk/gdkinternals.h> #include "gdkprivate-fb.h" +#include "gdkinputprivate.h" #include <stdlib.h> #include <sys/types.h> #include <fcntl.h> @@ -183,11 +184,11 @@ send_button_event (GdkFBMouse *mouse, event->button.x_root = mouse->x; event->button.y_root = mouse->y; - _gdk_event_queue_append (event); + _gdk_event_queue_append (gdk_display_get_default (), event); /* For double-clicks */ if (press_event) - _gdk_event_button_generate (event); + _gdk_event_button_generate (gdk_display_get_default (), event); } nbuttons = 0; diff --git a/gdk/linux-fb/gdkpango-fb.c b/gdk/linux-fb/gdkpango-fb.c index c983bf71d7..11f2632c3e 100644 --- a/gdk/linux-fb/gdkpango-fb.c +++ b/gdk/linux-fb/gdkpango-fb.c @@ -5,7 +5,7 @@ #include <pango/pangoft2.h> PangoContext * -gdk_pango_context_get (void) +gdk_pango_context_get_for_screen (GdkScreen *screen) { return pango_ft2_get_context (75.0, 75.0); } diff --git a/gdk/linux-fb/gdkprivate-fb.h b/gdk/linux-fb/gdkprivate-fb.h index e8741f4aab..9f8bd0baee 100644 --- a/gdk/linux-fb/gdkprivate-fb.h +++ b/gdk/linux-fb/gdkprivate-fb.h @@ -119,7 +119,6 @@ struct _GdkWindowFBData GdkRegion *shape; /* Can also be GDK_FB_USE_CHILD_SHAPE */ - GdkEventMask event_mask; gboolean realized : 1; }; @@ -426,6 +425,8 @@ extern GdkEventMask _gdk_fb_keyboard_grab_events; extern gboolean _gdk_fb_keyboard_grab_owner_events; extern GdkFBDisplay *gdk_display; +extern GdkDisplay *_gdk_display; +extern GdkScreen *_gdk_screen; extern FILE *debug_out; GdkEvent *gdk_event_make(GdkWindow *window, GdkEventType type, diff --git a/gdk/linux-fb/gdkscreen-fb.c b/gdk/linux-fb/gdkscreen-fb.c new file mode 100644 index 0000000000..45e6f7c0ed --- /dev/null +++ b/gdk/linux-fb/gdkscreen-fb.c @@ -0,0 +1,80 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#include "gdk.h" +#include "gdkprivate-fb.h" + +static GdkColormap *default_colormap = NULL; + +GdkDisplay * +gdk_screen_get_display (GdkScreen *screen) +{ + return _gdk_display; +} + +GdkWindow * +gdk_screen_get_root_window (GdkScreen *screen) +{ + return _gdk_parent_root; +} + +GdkColormap* +gdk_screen_get_default_colormap (GdkScreen *screen) +{ + return default_colormap; +} + +void +gdk_screen_set_default_colormap (GdkScreen *screen, + GdkColormap *colormap) +{ + default_colormap = colormap; +} + +int +gdk_screen_get_n_monitors (GdkScreen *screen) +{ + return 1; +} + +void +gdk_screen_get_monitor_geometry (GdkScreen *screen, + gint num_monitor, + GdkRectangle *dest) +{ + dest->x = 0; + dest->y = 0; + dest->width = gdk_screen_width (); + dest->height = gdk_screen_height (); +} + +gint +gdk_screen_get_number (GdkScreen *screen) +{ + g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); + + return 0; +} diff --git a/gdk/linux-fb/gdkselection-fb.c b/gdk/linux-fb/gdkselection-fb.c index 8a4b253ddf..e4ec724ece 100644 --- a/gdk/linux-fb/gdkselection-fb.c +++ b/gdk/linux-fb/gdkselection-fb.c @@ -65,10 +65,11 @@ _gdk_selection_window_destroyed (GdkWindow *window) } gint -gdk_selection_owner_set (GdkWindow *owner, - GdkAtom selection, - guint32 time, - gint send_event) +gdk_selection_owner_set_for_display (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gint send_event) { GSList *tmp_list; OwnerInfo *info; @@ -99,7 +100,8 @@ gdk_selection_owner_set (GdkWindow *owner, } GdkWindow* -gdk_selection_owner_get (GdkAtom selection) +gdk_selection_owner_get_for_display (GdkDisplay *display, + GdkAtom selection) { OwnerInfo *info; GSList *tmp_list; @@ -204,11 +206,12 @@ gdk_selection_property_get (GdkWindow *requestor, void -gdk_selection_send_notify (guint32 requestor, - GdkAtom selection, - GdkAtom target, - GdkAtom property, - guint32 time) +gdk_selection_send_notify_for_display (GdkDisplay *display, + guint32 requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time) { GdkEvent *event; GdkWindow *event_window; @@ -225,9 +228,12 @@ gdk_selection_send_notify (guint32 requestor, } gint -gdk_text_property_to_text_list (GdkAtom encoding, gint format, - const guchar *text, gint length, - gchar ***list) +gdk_text_property_to_text_list_for_display (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { g_warning ("gdk_text_property_to_text_list() not implemented\n"); return 0; @@ -241,9 +247,12 @@ gdk_free_text_list (gchar **list) } gint -gdk_string_to_compound_text (const gchar *str, - GdkAtom *encoding, gint *format, - guchar **ctext, gint *length) +gdk_string_to_compound_text_for_display (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length) { g_warning ("gdk_string_to_compound_text() not implemented\n"); return 0; @@ -275,7 +284,7 @@ gdk_utf8_to_string_target (const gchar *str) } /** - * gdk_utf8_to_compound_text: + * gdk_utf8_to_compound_text_for_display: * @str: a UTF-8 string * @encoding: location to store resulting encoding * @format: location to store format of the result @@ -289,11 +298,12 @@ gdk_utf8_to_string_target (const gchar *str) * false. **/ gboolean -gdk_utf8_to_compound_text (const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) +gdk_utf8_to_compound_text_for_display (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length) { g_warning ("gdk_utf8_to_compound_text() not implemented\n"); return 0; @@ -370,7 +380,7 @@ make_list (const gchar *text, /** - * gdk_text_property_to_utf8_list: + * gdk_text_property_to_utf8_list_for_display: * @encoding: an atom representing the encoding of the text * @format: the format of the property * @text: the text to convert @@ -385,11 +395,12 @@ make_list (const gchar *text, * list. **/ gint -gdk_text_property_to_utf8_list (GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { g_return_val_if_fail (text != NULL, 0); g_return_val_if_fail (length >= 0, 0); diff --git a/gdk/linux-fb/gdkvisual-fb.c b/gdk/linux-fb/gdkvisual-fb.c index ac707b779e..7fd01ae3ae 100644 --- a/gdk/linux-fb/gdkvisual-fb.c +++ b/gdk/linux-fb/gdkvisual-fb.c @@ -155,7 +155,7 @@ gdk_visual_get_best_type (void) } GdkVisual* -gdk_visual_get_system (void) +gdk_screen_get_system_visual (GdkScreen *screen) { return system_visual; } @@ -214,7 +214,15 @@ gdk_query_visual_types (GdkVisualType **visual_types, } GList* -gdk_list_visuals (void) +gdk_screen_list_visuals (GdkScreen *screen) { return g_list_append (NULL, gdk_visual_get_system ()); } + +GdkScreen * +gdk_visual_get_screen (GdkVisual *visual) +{ + g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL); + + return gdk_screen_get_default (); +} diff --git a/gdk/linux-fb/gdkwindow-fb.c b/gdk/linux-fb/gdkwindow-fb.c index 30090fd53a..3fc4bdb9ef 100644 --- a/gdk/linux-fb/gdkwindow-fb.c +++ b/gdk/linux-fb/gdkwindow-fb.c @@ -96,7 +96,6 @@ gdk_window_impl_fb_init (GdkWindowFBData *impl) { impl->drawable_data.depth = gdk_display->modeinfo.bits_per_pixel; impl->drawable_data.colormap = gdk_colormap_get_system (); - impl->event_mask = GDK_STRUCTURE_MASK; impl->shape = NULL; } @@ -1734,7 +1733,7 @@ gdk_window_get_events (GdkWindow *window) if (GDK_WINDOW_DESTROYED (window)) return 0; else - return GDK_WINDOW_IMPL_FBDATA (window)->event_mask; + return GDK_WINDOW_OBJECT (window)->event_mask; } void @@ -1750,10 +1749,7 @@ gdk_window_set_events (GdkWindow *window, GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK; - if (!GDK_WINDOW_DESTROYED (window)) - GDK_WINDOW_IMPL_FBDATA (window)->event_mask = event_mask; - - GDK_WINDOW_OBJECT (window)->event_mask = event_mask; + GDK_WINDOW_OBJECT (window)->event_mask = GDK_STRUCTURE_MASK | event_mask; } void @@ -2252,7 +2248,8 @@ gdk_window_get_frame_extents (GdkWindow *window, } GdkWindow* -gdk_window_foreign_new (GdkNativeWindow anid) +gdk_window_foreign_new_for_display (GdkDisplay *display, + GdkNativeWindow anid) { return (GdkWindow*) gdk_drawable_ref (anid); } @@ -2263,3 +2260,10 @@ gdk_window_lookup (GdkNativeWindow anid) return (GdkWindow*) (anid); } +GdkWindow * +gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid) +{ + g_return_val_if_fail (display == gdk_display_get_default(), NULL); + + return (GdkWindow*) (anid); +} |