diff options
Diffstat (limited to 'gdk/directfb/gdkdisplay-directfb.c')
-rw-r--r-- | gdk/directfb/gdkdisplay-directfb.c | 540 |
1 files changed, 0 insertions, 540 deletions
diff --git a/gdk/directfb/gdkdisplay-directfb.c b/gdk/directfb/gdkdisplay-directfb.c deleted file mode 100644 index 895713f9d9..0000000000 --- a/gdk/directfb/gdkdisplay-directfb.c +++ /dev/null @@ -1,540 +0,0 @@ -/* 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 "config.h" - -#include <glib.h> -#include "gdk.h" -#include "gdkdirectfb.h" -#include "gdkprivate-directfb.h" -#include "gdkscreen.h" -#include "gdkdisplaymanager.h" - - -extern void _gdk_visual_init (void); -extern void _gdk_events_init (void); -extern void _gdk_input_init (void); -extern void _gdk_dnd_init (void); -extern void _gdk_windowing_window_init (void); -extern void _gdk_directfb_keyboard_init (void); - -static gboolean gdk_directfb_argb_font = FALSE; -static gint gdk_directfb_glyph_surface_cache = 8; - - -const GOptionEntry _gdk_windowing_args[] = -{ - { "disable-aa-fonts",0,0,G_OPTION_ARG_INT,&gdk_directfb_monochrome_fonts,NULL,NULL }, - { "argb-font",0,0, G_OPTION_ARG_INT, &gdk_directfb_argb_font,NULL,NULL}, - { "transparent-unfocused",0,0, G_OPTION_ARG_INT, &gdk_directfb_apply_focus_opacity,NULL,NULL }, - { "glyph-surface-cache",0,0,G_OPTION_ARG_INT,&gdk_directfb_glyph_surface_cache,NULL,NULL }, - { "enable-color-keying",0,0,G_OPTION_ARG_INT,&gdk_directfb_enable_color_keying,NULL,NULL }, - { NULL} -}; - -/* Main entry point for gdk in 2.6 args are parsed - */ -GdkDisplay * gdk_display_open (const gchar *display_name) -{ - IDirectFB *directfb; - IDirectFBDisplayLayer *layer; - IDirectFBInputDevice *keyboard; - DFBResult ret; - - if (_gdk_display) - { - return GDK_DISPLAY_OBJECT(_gdk_display); /* single display only */ - } - - ret = DirectFBInit (NULL, NULL); - if (ret != DFB_OK) - { - DirectFBError ("gdk_display_open: DirectFBInit", ret); - return NULL; - } - - ret = DirectFBCreate (&directfb); - if (ret != DFB_OK) - { - DirectFBError ("gdk_display_open: DirectFBCreate", ret); - return NULL; - } - - _gdk_display = g_object_new (GDK_TYPE_DISPLAY_DFB, NULL); - _gdk_display->directfb = directfb; - - ret = directfb->GetDisplayLayer (directfb, DLID_PRIMARY, &layer); - if (ret != DFB_OK) - { - DirectFBError ("gdk_display_open: GetDisplayLayer", ret); - directfb->Release (directfb); - _gdk_display->directfb = NULL; - return NULL; - } - - - ret = directfb->GetInputDevice (directfb, DIDID_KEYBOARD, &keyboard); - if (ret != DFB_OK) - { - DirectFBError ("gdk_display_open: GetInputDevice", ret); - directfb->Release (directfb); - _gdk_display->directfb = NULL; - return NULL; - } - - _gdk_display->layer=layer; - _gdk_display->keyboard=keyboard; - - _gdk_directfb_keyboard_init (); - - _gdk_screen = g_object_new (GDK_TYPE_SCREEN, NULL); - - _gdk_visual_init (); - _gdk_windowing_window_init (); - - gdk_screen_set_default_colormap (_gdk_screen, - gdk_screen_get_system_colormap (_gdk_screen)); _gdk_windowing_image_init (); - - _gdk_events_init (); - _gdk_input_init (); - _gdk_dnd_init (); - - layer->EnableCursor (layer, 1); - - g_signal_emit_by_name (gdk_display_manager_get (), - "display_opened", _gdk_display); - - return GDK_DISPLAY_OBJECT(_gdk_display); -} - -GType -gdk_display_dfb_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkDisplayDFBClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) NULL, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkDisplayDFB), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - object_type = g_type_register_static (GDK_TYPE_DISPLAY, - "GdkDisplayDFB", - &object_info, 0); - } - - return object_type; -} - -IDirectFBSurface * gdk_display_dfb_create_surface (GdkDisplayDFB *display,int format,int width, int height) { - DFBResult ret; - IDirectFBSurface *temp; - DFBSurfaceDescription dsc; - dsc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT; - dsc.width = width; - dsc.height = height; - dsc.pixelformat = format; - ret = display->directfb->CreateSurface (display->directfb, &dsc, &temp); - if (ret) - { - DirectFBError ("gdk_display_dfb_create_surface ", ret); - return NULL; - } - return temp; - -} - - -/************************************************************************************************* - * Displays and Screens - */ - -void -_gdk_windowing_set_default_display (GdkDisplay *display) -{ - _gdk_display=GDK_DISPLAY_DFB(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; -} - -gboolean -gdk_display_supports_shapes (GdkDisplay *display) -{ - return FALSE; -} - -gboolean -gdk_display_supports_input_shapes (GdkDisplay *display) -{ - return FALSE; -} - - -GdkWindow *gdk_display_get_default_group (GdkDisplay *display) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return _gdk_parent_root; -} - - -/************************************************************************************************* - * Selection and Clipboard - */ - -gboolean -gdk_display_supports_selection_notification (GdkDisplay *display) -{ - return FALSE; -} - -gboolean gdk_display_request_selection_notification (GdkDisplay *display, - GdkAtom selection) - -{ - - g_warning("gdk_display_request_selection_notification Unimplemented function \n"); - return FALSE; -} - -gboolean -gdk_display_supports_clipboard_persistence (GdkDisplay *display) -{ - g_warning("gdk_display_supports_clipboard_persistence Unimplemented function \n"); - return FALSE; -} - -void -gdk_display_store_clipboard (GdkDisplay *display, - GdkWindow *clipboard_window, - guint32 time_, - const GdkAtom *targets, - gint n_targets) -{ - - g_warning("gdk_display_store_clipboard Unimplemented function \n"); - -} - - -/************************************************************************************************* - * Pointer - */ - -static gboolean _gdk_directfb_pointer_implicit_grab = FALSE; - -GdkGrabStatus -gdk_directfb_pointer_grab (GdkWindow *window, - gint owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time, - gboolean implicit_grab) -{ - GdkWindow *toplevel; - GdkWindowImplDirectFB *impl; - if (_gdk_directfb_pointer_grab_window) - { - if (implicit_grab && !_gdk_directfb_pointer_implicit_grab) - return GDK_GRAB_ALREADY_GRABBED; - - gdk_pointer_ungrab (time); - } - - toplevel = gdk_directfb_window_find_toplevel (window); - impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl); - - if (impl->window) - { - if (impl->window->GrabPointer (impl->window) == DFB_LOCKED) - return GDK_GRAB_ALREADY_GRABBED; - } - - if (event_mask & GDK_BUTTON_MOTION_MASK) - event_mask |= (GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON2_MOTION_MASK | - GDK_BUTTON3_MOTION_MASK); - - _gdk_directfb_pointer_implicit_grab = implicit_grab; - _gdk_directfb_pointer_grab_window = g_object_ref (window); - _gdk_directfb_pointer_grab_owner_events = owner_events; - - _gdk_directfb_pointer_grab_confine = (confine_to ? - g_object_ref (confine_to) : NULL); - _gdk_directfb_pointer_grab_events = event_mask; - _gdk_directfb_pointer_grab_cursor = (cursor ? - gdk_cursor_ref (cursor) : NULL); - - - gdk_directfb_window_send_crossing_events (NULL, - window, - GDK_CROSSING_GRAB); - - return GDK_GRAB_SUCCESS; -} - -void -gdk_directfb_pointer_ungrab (guint32 time, - gboolean implicit_grab) -{ - GdkWindow *toplevel; - GdkWindow *mousewin; - GdkWindow *old_grab_window; - GdkWindowImplDirectFB *impl; - - if (implicit_grab && !_gdk_directfb_pointer_implicit_grab) - return; - - if (!_gdk_directfb_pointer_grab_window) - return; - - toplevel = - gdk_directfb_window_find_toplevel (_gdk_directfb_pointer_grab_window); - impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl); - - if (impl->window) - impl->window->UngrabPointer (impl->window); - - if (_gdk_directfb_pointer_grab_confine) - { - g_object_unref (_gdk_directfb_pointer_grab_confine); - _gdk_directfb_pointer_grab_confine = NULL; - } - - if (_gdk_directfb_pointer_grab_cursor) - { - gdk_cursor_unref (_gdk_directfb_pointer_grab_cursor); - _gdk_directfb_pointer_grab_cursor = NULL; - } - - old_grab_window = _gdk_directfb_pointer_grab_window; - - _gdk_directfb_pointer_grab_window = NULL; - _gdk_directfb_pointer_implicit_grab = FALSE; - - mousewin = gdk_window_at_pointer (NULL, NULL); - gdk_directfb_window_send_crossing_events (old_grab_window, - mousewin, - GDK_CROSSING_UNGRAB); - g_object_unref (old_grab_window); -} - -void -gdk_display_pointer_ungrab (GdkDisplay *display, - guint32 time) -{ - GdkPointerGrabInfo *grab = _gdk_display_get_last_pointer_grab (display); - - if (grab) - { - grab->serial_end = 0; - } - - _gdk_display_pointer_grab_update (display, 0); -} - - -/************************************************************************************************* - * Keyboard - */ - -GdkGrabStatus -gdk_directfb_keyboard_grab (GdkDisplay *display, - GdkWindow *window, - gint owner_events, - guint32 time) -{ - GdkWindow *toplevel; - GdkWindowImplDirectFB *impl; - - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); - - if (_gdk_directfb_keyboard_grab_window) - gdk_keyboard_ungrab (time); - - toplevel = gdk_directfb_window_find_toplevel (window); - impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl); - - if (impl->window) - { - if (impl->window->GrabKeyboard (impl->window) == DFB_LOCKED) - return GDK_GRAB_ALREADY_GRABBED; - } - - _gdk_directfb_keyboard_grab_window = g_object_ref (window); - _gdk_directfb_keyboard_grab_owner_events = owner_events; - return GDK_GRAB_SUCCESS; -} - -void -gdk_directfb_keyboard_ungrab (GdkDisplay *display, - guint32 time) -{ - GdkWindow *toplevel; - GdkWindowImplDirectFB *impl; - - if (!_gdk_directfb_keyboard_grab_window) - return; - - toplevel = gdk_directfb_window_find_toplevel (_gdk_directfb_keyboard_grab_window); - impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl); - - if (impl->window) - impl->window->UngrabKeyboard (impl->window); - - g_object_unref (_gdk_directfb_keyboard_grab_window); - _gdk_directfb_keyboard_grab_window = NULL; -} - -/* - *-------------------------------------------------------------- - * gdk_keyboard_grab - * - * Grabs the keyboard to a specific window - * - * Arguments: - * "window" is the window which will receive the grab - * "owner_events" specifies whether events will be reported as is, - * or relative to "window" - * "time" specifies the time - * - * Results: - * - * Side effects: - * requires a corresponding call to gdk_keyboard_ungrab - * - *-------------------------------------------------------------- - */ - -GdkGrabStatus -gdk_display_keyboard_grab (GdkDisplay *display, - GdkWindow *window, - gint owner_events, - guint32 time) -{ - return gdk_directfb_keyboard_grab (display, window, owner_events, time); -} - -void -gdk_display_keyboard_ungrab (GdkDisplay *display, - guint32 time) -{ - return gdk_directfb_keyboard_ungrab (display, time); -} - - -/************************************************************************************************* - * Misc Stuff - */ - -void -gdk_display_beep (GdkDisplay *display) -{ -} - -void -gdk_display_sync (GdkDisplay *display) -{ -} - -void -gdk_display_flush (GdkDisplay *display) -{ -} - - - -/************************************************************************************************* - * Notifications - */ - -void -gdk_notify_startup_complete (void) -{ -} - -/** - * gdk_notify_startup_complete_with_id: - * @startup_id: a startup-notification identifier, for which notification - * process should be completed - * - * Indicates to the GUI environment that the application has finished - * loading, using a given identifier. - * - * GTK+ will call this function automatically for #GtkWindow with custom - * startup-notification identifier unless - * gtk_window_set_auto_startup_notification() is called to disable - * that feature. - * - * Since: 2.12 - **/ -void -gdk_notify_startup_complete_with_id (const gchar* startup_id) -{ -} - - -/************************************************************************************************* - * Compositing - */ - -gboolean -gdk_display_supports_composite (GdkDisplay *display) -{ - return FALSE; -} |