gtk2/gdk/directfb
Alexander Larsson 939e55223c Ensure that queue_translation is paired with the right X operation
The X11 queue_translation operation uses NextRequest to get the serial
of the XCopyArea operation where the translation should end. However,
if the gc passed to gdk_draw_drawable has a non-flushed clip region
(which it commonly has now for the window clipping) then the next
operation will be the GC flush, not the XCopyArea.

To handle this right we now pass in the GC to be used to
queue_translation and ensure that it is flushed before calling
NextRequest().
2009-08-13 14:46:02 +02:00
..
AUTHORS updated mine and Dok's email address. 2006-02-07 11:58:49 +00:00
gdkapplaunchcontext-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkcolor-directfb.c gdk/gdk.h gdk/gdkcairo.h gdk/gdkcolor.h gdk/gdkgc.h gdk/gdkinternals.h 2008-01-14 14:02:12 +00:00
gdkcursor-directfb.c Bug 533456 – Memory leak when window is destroyed 2009-02-18 20:43:31 +00:00
gdkdirectfb.h Bug 533456 – Memory leak when window is destroyed 2009-02-18 20:43:31 +00:00
gdkdisplay-directfb.c get directfb building with csw 2009-07-09 23:53:26 +01:00
gdkdisplay-directfb.h Added new directfb backend 2006-02-05 04:04:29 +00:00
gdkdnd-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkdrawable-directfb.c more directfb updates 2009-07-13 08:36:40 -05:00
gdkevents-directfb.c Bug 533456 – Memory leak when window is destroyed 2009-02-18 20:43:31 +00:00
gdkfont-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkgc-directfb.c get directfb building with csw 2009-07-09 23:53:26 +01:00
gdkgeometry-directfb.c Bug 554407 – directfb backend does not implement GdkWindowImpl 2009-02-18 17:17:33 +00:00
gdkglobals-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkim-directfb.c gdk/directfb/gdkdirectfb.h gdk/directfb/gdkdisplay-directfb.c 2008-01-30 19:43:16 +00:00
gdkimage-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkinput-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkinput-directfb.h get directfb building with csw 2009-07-09 23:53:26 +01:00
gdkkeys-directfb.c Bug 543710 – Dead keys do not work anymore with DirectFB 2009-02-18 17:43:13 +00:00
gdkmain-directfb.c more directfb updates 2009-07-13 08:36:40 -05:00
gdkpixmap-directfb.c get directfb building with csw 2009-07-09 23:53:26 +01:00
gdkprivate-directfb.h Bug 533456 – Memory leak when window is destroyed 2009-02-18 20:43:31 +00:00
gdkproperty-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdkscreen-directfb.c add these functions to make it build again. 2008-01-10 17:04:45 +00:00
gdkselection-directfb.c Added new directfb backend 2006-02-05 04:04:29 +00:00
gdkspawn-directfb.c Include "config.h" instead of <config.h> Command used: find -name 2008-06-22 14:28:52 +00:00
gdktestutils-directfb.c Fix compilation with DirectFB 1.0 2009-04-09 16:50:25 +02:00
gdkvisual-directfb.c Avoid a crash 2008-07-18 19:03:54 +00:00
gdkwindow-directfb.c Ensure that queue_translation is paired with the right X operation 2009-08-13 14:46:02 +02:00
gdkwindowid.c Added new directfb backend 2006-02-05 04:04:29 +00:00
Makefile.am Add git.mk to generate .gitignore files 2009-05-04 14:29:21 -04:00
README Removed old build instructions 2006-02-26 18:24:53 +00:00
TODO *gdk/directfb/gdkdisplay-directfb.c *gdk/directfb/gdkwindow-directfb.c 2006-02-25 18:37:53 +00:00
x-cursors.xbm Added new directfb backend 2006-02-05 04:04:29 +00:00

README for GDK-DirectFB
------------------------

This is the GDK backend that allows GTK to work on top of DirectFB.

Important:
The current code does not pass through directfb passed on the gtk
apps command line on to directfb you need to set the environment variable
DFBARGS.
Example:
export DFBARGS=system=sdl

DirectFB is a hardware abstraction layer on top of the Linux
frame buffer that provides drawing functions, a window stack and
support for input devices. The code you find here is a backend for
GDK, the drawing kit used by GTK+.


As DirectFB provides drawing functions, a windowing stack and manages
input devices, this is a lightweight GDK port. Some parts of GDK
require higher level drawing functions that are supported by 
cairo on DirectFB. 
GDK also uses some feature like bitmaps that do not map well to 
modern graphics hardware and are for that reason not yet supported in 
this snapshot. See the file TODO for a list of missing features.


If you want GTK+ to draw window decorations for you, edit the file
gtk/gtkwindow-decorate.c and uncomment the line that says
#define DECORATE_WINDOWS.


GTK+ application compiled with this version of GTK+ understand some
additional command-line options special to the DirectFB GDK backend:

  --transparent-unfocused  Makes unfocused windows translucent.

  --argb-font              Use ARGB surfaces for fonts, needed for some
                           broken hardware.

  --glyph-surface-cache    Lets you tune the size of the glyph cache, 
                           the default is to cache glyphs from 8 faces.

  --enable-color-keying    This option turns on a hack that does the
                           following:

    (1) It overrides the color used to draw the window background to
        gdk_directfb_bg_color as defined in gdkprivate-directfb.h.
        Note that the alpha value only takes effect if the window has
        an alpha channel.
    (2) It also draws all rectangles that are drawn in
        gdk_directfb_bg_color_key in this color (gdk_directfb_bg_color).

    This feature can be used to create windows with translucent background.

Additionally all DirectFB command-line options as described in the
directfbrc man-page are supported.


This version of GTK+ also introduces two new functions that are special
to the DirectFB version. You need to include gdk/gdkdirectfb.h to be
able to use them.

  gdk_directfb_window_set_opacity (GdkWindow *window, guchar opacity));

      This function sets the overall opacity for toplevel GDK windows.

  gdk_directfb_visual_by_format (DFBSurfacePixelFormat pixel_format);

      This function returns a GdkVisual for a DirectFB pixelformat and
      thus gives you control over the window surface. If for example
      you want to create a window with alpha channel you can use some
      code like the following:

        visual = gdk_directfb_visual_by_format (DSPF_ARGB);
        cmap = gdk_colormap_new (visual, FALSE);
        gtk_widget_push_colormap (cmap);
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_widget_pop_colormap ();
        g_object_unref (cmap);

Don't use these functions if you want to be able to compile your
application against GTK+-X11 or other GTK+ versions.


If you are developing a GTK+ application for GTK+-DirectFB make sure
you use the gtk+-directfb-2.0.pc file when calling pkg-config to get
the  correct compiler and linker flags for GTK+-DirectFB:

  pkg-config --cflags gtk+-directfb-2.0
  pkg-config --libs gtk+-directfb-2.0


See the file TODO for a list of unimplemented features.


Detailed and up-to-date instructions on how to build a complete
set of GTK-DFB libraries is avalable in the WIKI of the DirectFB project
at the address
http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB


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.