]> Pileus Git - ~andy/gtk/blobdiff - gdk/linux-fb/gdkprivate-fb.h
More proper vt switch handling
[~andy/gtk] / gdk / linux-fb / gdkprivate-fb.h
index b3f408f1f161bf282dfcd48c4f2eae0a588dec7a..ff40699f990924414acd3981c4bcc6f19b8e377a 100644 (file)
 #define GDK_FONT_FB(f)                ((GdkFontPrivateFB *)(f))
 #define GDK_CURSOR_FB(c)              ((GdkCursorPrivateFB *)(c))
 
+#define CHECK_IMPL_AND_INTF
+
+#ifdef CHECK_IMPL_AND_INTF
 #define GDK_CHECK_IMPL(drawable) \
  g_assert(G_OBJECT_TYPE(drawable) == _gdk_window_impl_get_type() || G_OBJECT_TYPE(drawable) == _gdk_pixmap_impl_get_type())
 #define GDK_CHECK_INTF(drawable) \
  g_assert(G_OBJECT_TYPE(drawable) == gdk_window_object_get_type() || G_OBJECT_TYPE(drawable) == gdk_pixmap_get_type())
-
+#else
+#define GDK_CHECK_IMPL(drawable) 
+#define GDK_CHECK_INTF(drawable)
+#endif
 typedef struct _GdkDrawableFBData GdkDrawableFBData;
 typedef struct _GdkWindowFBData GdkWindowFBData;
 typedef struct _GdkPixmapFBData GdkPixmapFBData;
@@ -113,7 +119,6 @@ struct _GdkWindowFBData
 
   GdkRegion *shape; /* Can also be GDK_FB_USE_CHILD_SHAPE */
   
-  GdkEventMask event_mask;
   gboolean realized : 1;
 };
 
@@ -142,11 +147,18 @@ struct _GdkFBDisplay
   struct fb_var_screeninfo modeinfo;
   struct fb_var_screeninfo orig_modeinfo;
   int red_byte, green_byte, blue_byte; /* For truecolor */
+
+  /* fb manager */
+  int manager_fd;
+  int manager_tag;
+  int manager_blocked;
+};
+
+struct _GdkVisualClass
+{
+  GObjectClass parent_class;
 };
 
-typedef struct {
-  GdkVisual base;
-} GdkVisualPrivateFB;
 
 typedef struct {
   GHashTable *hash;
@@ -160,9 +172,20 @@ typedef struct {
   int hot_x, hot_y;
 } GdkCursorPrivateFB;
 
+/* Define this to emulate slow emulation of
+   GdkFonts using PangoFont */
+#define EMULATE_GDKFONT
+
 typedef struct {
   GdkFontPrivate base;
+#ifdef EMULATE_GDKFONT
+  /* For PangoFont emulation: */
+  char *name;
+  PangoFont *pango_font;
+#else
+  /* For bogus GdkFonts: */
   int size;
+#endif
 } GdkFontPrivateFB;
 
 typedef struct {
@@ -262,7 +285,8 @@ void       gdk_window_invalidate_region_clear (GdkWindow       *window,
                                               GdkRegion       *region);
 void       gdk_window_invalidate_rect_clear   (GdkWindow       *window,
                                               GdkRectangle    *rect);
-void       gdk_fb_window_send_crossing_events (GdkWindow       *dest,
+void       gdk_fb_window_send_crossing_events (GdkWindow       *src,
+                                              GdkWindow       *dest,
                                               GdkCrossingMode  mode);
 void       gdk_fb_window_move_resize          (GdkWindow       *window,
                                               gint             x,
@@ -271,7 +295,10 @@ void       gdk_fb_window_move_resize          (GdkWindow       *window,
                                               gint             height,
                                               gboolean         send_expose_events);
 GdkWindow *gdk_fb_window_find_focus           (void);
-GdkRegion *gdk_fb_window_get_abs_shape        (GdkDrawable *window);
+GdkRegion *gdk_fb_window_get_abs_shape        (GdkDrawable     *window);
+GdkRegion *gdk_fb_window_peek_shape           (GdkDrawable     *window,
+                                              gint            *dx,
+                                              gint            *dy);
 GdkGC *   _gdk_fb_gc_new                      (GdkDrawable     *drawable,
                                               GdkGCValues     *values,
                                               GdkGCValuesMask  values_mask);
@@ -280,11 +307,14 @@ GdkGC *   _gdk_fb_gc_new                      (GdkDrawable     *drawable,
 void      _gdk_fb_gc_calc_state              (GdkGC           *gc,
                                              GdkGCValuesMask  changed);
 
-GdkImage *_gdk_fb_get_image                  (GdkDrawable     *drawable,
-                                             gint             x,
-                                             gint             y,
-                                             gint             width,
-                                             gint             height);
+GdkImage *_gdk_fb_copy_to_image              (GdkDrawable    *drawable,
+                                             GdkImage       *image,
+                                             gint            src_x,
+                                             gint            src_y,
+                                             gint            dest_x,
+                                             gint            dest_y,
+                                             gint            width,
+                                             gint            height);
 void      gdk_fb_drawable_clear              (GdkDrawable     *drawable);
 void      gdk_fb_draw_drawable               (GdkDrawable     *drawable,
                                              GdkGC           *gc,
@@ -342,7 +372,7 @@ void       gdk_fb_draw_drawable_2          (GdkDrawable         *drawable,
                                            gboolean             do_clipping);
 void       gdk_fb_draw_rectangle           (GdkDrawable         *drawable,
                                            GdkGC               *gc,
-                                           gint                 filled,
+                                           gboolean             filled,
                                            gint                 x,
                                            gint                 y,
                                            gint                 width,
@@ -355,7 +385,8 @@ void       gdk_fb_fill_spans               (GdkDrawable         *real_drawable,
 GdkRegion *gdk_fb_clip_region              (GdkDrawable         *drawable,
                                            GdkGC               *gc,
                                            gboolean             do_clipping,
-                                           gboolean             do_children);
+                                           gboolean             do_children,
+                                           gboolean             full_shapes);
 
 
 GdkGrabStatus gdk_fb_pointer_grab          (GdkWindow           *window,
@@ -378,16 +409,36 @@ void       gdk_shadow_fb_init              (void);
 void       gdk_shadow_fb_stop_updates      (void);
 void       gdk_fb_recompute_all            (void);
 
+extern GdkAtom _gdk_selection_property;
+
 extern GdkFBAngle _gdk_fb_screen_angle;
 
-extern GdkWindow *_gdk_fb_pointer_grab_window, *_gdk_fb_pointer_grab_window_events, *_gdk_fb_keyboard_grab_window, *_gdk_fb_pointer_grab_confine;
-extern GdkEventMask _gdk_fb_pointer_grab_events, _gdk_fb_keyboard_grab_events;
+/* Pointer grab info */
+extern GdkWindow *_gdk_fb_pointer_grab_window;
+extern gboolean _gdk_fb_pointer_grab_owner_events;
+extern GdkWindow *_gdk_fb_pointer_grab_confine;
+extern GdkEventMask _gdk_fb_pointer_grab_events;
 extern GdkCursor *_gdk_fb_pointer_grab_cursor;
+/* Keyboard grab info */
+extern GdkWindow *_gdk_fb_keyboard_grab_window;
+extern GdkEventMask _gdk_fb_keyboard_grab_events;
+extern gboolean _gdk_fb_keyboard_grab_owner_events;
+
 extern GdkFBDisplay *gdk_display;
-extern GdkDrawableClass _gdk_fb_drawable_class;
-extern FILE *debug_out;
-GdkEvent *gdk_event_make(GdkWindow *window, GdkEventType type, gboolean append_to_queue);
-GdkEvent *gdk_event_make_2(GdkWindow *window, GdkEventType type, gboolean append_to_queue, gint button_press_num);
+extern GdkDisplay *_gdk_display;
+extern GdkScreen *_gdk_screen;
+
+extern volatile gboolean _gdk_fb_is_active_vt;
+
+GdkEvent *gdk_event_make(GdkWindow *window,
+                        GdkEventType type,
+                        gboolean append_to_queue);
+GdkWindow * gdk_fb_pointer_event_window (GdkWindow *window,
+                                        GdkEventType type);
+GdkWindow *gdk_fb_keyboard_event_window (GdkWindow *window,
+                                        GdkEventType type);
+GdkWindow *gdk_fb_other_event_window (GdkWindow *window,
+                                     GdkEventType type);
 
 void gdk_fb_get_cursor_rect(GdkRectangle *rect);
 gboolean gdk_fb_cursor_need_hide(GdkRectangle *rect);
@@ -399,12 +450,22 @@ void gdk_fb_redraw_all(void);
 void gdk_fb_cursor_move (gint x, gint y, GdkWindow *in_window);
 
 guint gdk_fb_keyboard_modifiers (void);
+gboolean gdk_fb_keyboard_init  (gboolean open_dev);
 gboolean gdk_fb_keyboard_open  (void);
 void     gdk_fb_keyboard_close (void);
+gboolean gdk_fb_mouse_init     (gboolean open_dev);
 gboolean gdk_fb_mouse_open     (void);
 void     gdk_fb_mouse_close    (void);
 void     gdk_fb_mouse_get_info (gint            *x,
                                gint            *y,
                                GdkModifierType *mask);
 
+/* Initialization */
+void _gdk_windowing_window_init (void);
+void _gdk_visual_init (void);
+void _gdk_dnd_init    (void);
+void _gdk_windowing_image_init  (void);
+void _gdk_events_init (void);
+void _gdk_input_init (void);
+
 #endif /* __GDK_PRIVATE_FB_H__ */