summaryrefslogtreecommitdiff
path: root/Source/DirectFB/proxy/requestor
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DirectFB/proxy/requestor')
-rwxr-xr-xSource/DirectFB/proxy/requestor/Makefile.am125
-rwxr-xr-xSource/DirectFB/proxy/requestor/Makefile.in1401
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfb_requestor.c1045
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbdatabuffer_requestor.c484
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.c721
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.h47
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.c300
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.h54
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbfont_requestor.c530
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbfont_requestor.h47
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbfoo_requestor.c135
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbfoo_requestor.h45
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbimageprovider_requestor.c264
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.c469
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.h45
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbpalette_requestor.c335
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbpalette_requestor.h45
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbscreen_requestor.c524
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbsurface_requestor.c1852
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbsurface_requestor.h80
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbwindow_requestor.c1120
-rwxr-xr-xSource/DirectFB/proxy/requestor/idirectfbwindow_requestor.h47
22 files changed, 9715 insertions, 0 deletions
diff --git a/Source/DirectFB/proxy/requestor/Makefile.am b/Source/DirectFB/proxy/requestor/Makefile.am
new file mode 100755
index 0000000..e64f78d
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/Makefile.am
@@ -0,0 +1,125 @@
+## Makefile.am for DirectFB/proxy/requestor
+
+INTERFACES_DIR = $(MODULEDIR)/interfaces
+
+idirectfbdir = $(INTERFACES_DIR)/IDirectFB
+idirectfbdatabufferdir = $(INTERFACES_DIR)/IDirectFBDataBuffer
+idirectfbdisplaylayerdir = $(INTERFACES_DIR)/IDirectFBDisplayLayer
+idirectfbeventbufferdir = $(INTERFACES_DIR)/IDirectFBEventBuffer
+idirectfbfontdir = $(INTERFACES_DIR)/IDirectFBFont
+idirectfbimageproviderdir = $(INTERFACES_DIR)/IDirectFBImageProvider
+idirectfbinputdevicedir = $(INTERFACES_DIR)/IDirectFBInputDevice
+idirectfbpalettedir = $(INTERFACES_DIR)/IDirectFBPalette
+idirectfbscreendir = $(INTERFACES_DIR)/IDirectFBScreen
+idirectfbsurfacedir = $(INTERFACES_DIR)/IDirectFBSurface
+idirectfbwindowdir = $(INTERFACES_DIR)/IDirectFBWindow
+idirectfbvideoproviderdir = $(INTERFACES_DIR)/IDirectFBVideoProvider
+
+INCLUDES = \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/proxy/dispatcher \
+ -DDATADIR=\"${RUNTIME_SYSROOT}@DATADIR@\"
+
+LIBS = \
+ $(top_builddir)/lib/voodoo/libvoodoo.la \
+ $(top_builddir)/lib/direct/libdirect.la
+
+
+idirectfb_LTLIBRARIES = \
+ libidirectfb_requestor.la
+
+idirectfbdatabuffer_LTLIBRARIES = \
+ libidirectfbdatabuffer_requestor.la
+
+idirectfbdisplaylayer_LTLIBRARIES = \
+ libidirectfbdisplaylayer_requestor.la
+
+idirectfbeventbuffer_LTLIBRARIES = \
+ libidirectfbeventbuffer_requestor.la
+
+idirectfbfont_LTLIBRARIES = \
+ libidirectfbfont_requestor.la
+
+idirectfbimageprovider_LTLIBRARIES = \
+ libidirectfbimageprovider_requestor.la
+
+idirectfbinputdevice_LTLIBRARIES = \
+ libidirectfbinputdevice_requestor.la
+
+idirectfbpalette_LTLIBRARIES = \
+ libidirectfbpalette_requestor.la
+
+idirectfbscreen_LTLIBRARIES = \
+ libidirectfbscreen_requestor.la
+
+idirectfbsurface_LTLIBRARIES = \
+ libidirectfbsurface_requestor.la
+
+idirectfbwindow_LTLIBRARIES = \
+ libidirectfbwindow_requestor.la
+
+if BUILD_STATIC
+idirectfb_DATA = libidirectfb_requestor.o
+idirectfbdatabuffer_DATA = libidirectfbdatabuffer_requestor.o
+idirectfbdisplaylayer_DATA = libidirectfbdisplaylayer_requestor.o
+idirectfbeventbuffer_DATA = libidirectfbeventbuffer_requestor.o
+idirectfbfont_DATA = libidirectfbfont_requestor.o
+idirectfbimageprovider_DATA = libidirectfbimageprovider_requestor.o
+idirectfbinputdevice_DATA = libidirectfbinputdevice_requestor.o
+idirectfbpalette_DATA = libidirectfbpalette_requestor.o
+idirectfbscreen_DATA = libidirectfbscreen_requestor.o
+idirectfbsurface_DATA = libidirectfbsurface_requestor.o
+idirectfbwindow_DATA = libidirectfbwindow_requestor.o
+endif
+
+
+libidirectfb_requestor_la_SOURCES = idirectfb_requestor.c
+libidirectfb_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfb_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbdatabuffer_requestor_la_SOURCES = idirectfbdatabuffer_requestor.c
+libidirectfbdatabuffer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbdatabuffer_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbdisplaylayer_requestor_la_SOURCES = idirectfbdisplaylayer_requestor.c idirectfbdisplaylayer_requestor.h
+libidirectfbdisplaylayer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbdisplaylayer_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbeventbuffer_requestor_la_SOURCES = idirectfbeventbuffer_requestor.c idirectfbeventbuffer_requestor.h
+libidirectfbeventbuffer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbeventbuffer_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbfont_requestor_la_SOURCES = idirectfbfont_requestor.c idirectfbfont_requestor.h
+libidirectfbfont_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbfont_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbimageprovider_requestor_la_SOURCES = idirectfbimageprovider_requestor.c
+libidirectfbimageprovider_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbimageprovider_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbinputdevice_requestor_la_SOURCES = idirectfbinputdevice_requestor.c idirectfbinputdevice_requestor.h
+libidirectfbinputdevice_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbinputdevice_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbpalette_requestor_la_SOURCES = idirectfbpalette_requestor.c idirectfbpalette_requestor.h
+libidirectfbpalette_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbpalette_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbscreen_requestor_la_SOURCES = idirectfbscreen_requestor.c
+libidirectfbscreen_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbscreen_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbsurface_requestor_la_SOURCES = idirectfbsurface_requestor.c idirectfbsurface_requestor.h
+libidirectfbsurface_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbsurface_requestor_la_LIBADD = $(LIBS)
+
+libidirectfbwindow_requestor_la_SOURCES = idirectfbwindow_requestor.c idirectfbwindow_requestor.h
+libidirectfbwindow_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbwindow_requestor_la_LIBADD = $(LIBS)
+
+
+include $(top_srcdir)/rules/libobject.make
diff --git a/Source/DirectFB/proxy/requestor/Makefile.in b/Source/DirectFB/proxy/requestor/Makefile.in
new file mode 100755
index 0000000..6d7891c
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/Makefile.in
@@ -0,0 +1,1401 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/rules/libobject.make
+subdir = proxy/requestor
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(idirectfbdir)" \
+ "$(DESTDIR)$(idirectfbdatabufferdir)" \
+ "$(DESTDIR)$(idirectfbdisplaylayerdir)" \
+ "$(DESTDIR)$(idirectfbeventbufferdir)" \
+ "$(DESTDIR)$(idirectfbfontdir)" \
+ "$(DESTDIR)$(idirectfbimageproviderdir)" \
+ "$(DESTDIR)$(idirectfbinputdevicedir)" \
+ "$(DESTDIR)$(idirectfbpalettedir)" \
+ "$(DESTDIR)$(idirectfbscreendir)" \
+ "$(DESTDIR)$(idirectfbsurfacedir)" \
+ "$(DESTDIR)$(idirectfbwindowdir)" "$(DESTDIR)$(idirectfbdir)" \
+ "$(DESTDIR)$(idirectfbdatabufferdir)" \
+ "$(DESTDIR)$(idirectfbdisplaylayerdir)" \
+ "$(DESTDIR)$(idirectfbeventbufferdir)" \
+ "$(DESTDIR)$(idirectfbfontdir)" \
+ "$(DESTDIR)$(idirectfbimageproviderdir)" \
+ "$(DESTDIR)$(idirectfbinputdevicedir)" \
+ "$(DESTDIR)$(idirectfbpalettedir)" \
+ "$(DESTDIR)$(idirectfbscreendir)" \
+ "$(DESTDIR)$(idirectfbsurfacedir)" \
+ "$(DESTDIR)$(idirectfbwindowdir)"
+idirectfbLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbdatabufferLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbdisplaylayerLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbeventbufferLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbfontLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbimageproviderLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbinputdeviceLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbpaletteLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbscreenLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbsurfaceLTLIBRARIES_INSTALL = $(INSTALL)
+idirectfbwindowLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(idirectfb_LTLIBRARIES) \
+ $(idirectfbdatabuffer_LTLIBRARIES) \
+ $(idirectfbdisplaylayer_LTLIBRARIES) \
+ $(idirectfbeventbuffer_LTLIBRARIES) \
+ $(idirectfbfont_LTLIBRARIES) \
+ $(idirectfbimageprovider_LTLIBRARIES) \
+ $(idirectfbinputdevice_LTLIBRARIES) \
+ $(idirectfbpalette_LTLIBRARIES) $(idirectfbscreen_LTLIBRARIES) \
+ $(idirectfbsurface_LTLIBRARIES) $(idirectfbwindow_LTLIBRARIES)
+libidirectfb_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfb_requestor_la_OBJECTS = idirectfb_requestor.lo
+libidirectfb_requestor_la_OBJECTS = \
+ $(am_libidirectfb_requestor_la_OBJECTS)
+libidirectfb_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libidirectfb_requestor_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+libidirectfbdatabuffer_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbdatabuffer_requestor_la_OBJECTS = \
+ idirectfbdatabuffer_requestor.lo
+libidirectfbdatabuffer_requestor_la_OBJECTS = \
+ $(am_libidirectfbdatabuffer_requestor_la_OBJECTS)
+libidirectfbdatabuffer_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbdatabuffer_requestor_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
+libidirectfbdisplaylayer_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbdisplaylayer_requestor_la_OBJECTS = \
+ idirectfbdisplaylayer_requestor.lo
+libidirectfbdisplaylayer_requestor_la_OBJECTS = \
+ $(am_libidirectfbdisplaylayer_requestor_la_OBJECTS)
+libidirectfbdisplaylayer_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbdisplaylayer_requestor_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
+libidirectfbeventbuffer_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbeventbuffer_requestor_la_OBJECTS = \
+ idirectfbeventbuffer_requestor.lo
+libidirectfbeventbuffer_requestor_la_OBJECTS = \
+ $(am_libidirectfbeventbuffer_requestor_la_OBJECTS)
+libidirectfbeventbuffer_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbeventbuffer_requestor_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
+libidirectfbfont_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbfont_requestor_la_OBJECTS = idirectfbfont_requestor.lo
+libidirectfbfont_requestor_la_OBJECTS = \
+ $(am_libidirectfbfont_requestor_la_OBJECTS)
+libidirectfbfont_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbfont_requestor_la_LDFLAGS) $(LDFLAGS) -o $@
+libidirectfbimageprovider_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbimageprovider_requestor_la_OBJECTS = \
+ idirectfbimageprovider_requestor.lo
+libidirectfbimageprovider_requestor_la_OBJECTS = \
+ $(am_libidirectfbimageprovider_requestor_la_OBJECTS)
+libidirectfbimageprovider_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbimageprovider_requestor_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+libidirectfbinputdevice_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbinputdevice_requestor_la_OBJECTS = \
+ idirectfbinputdevice_requestor.lo
+libidirectfbinputdevice_requestor_la_OBJECTS = \
+ $(am_libidirectfbinputdevice_requestor_la_OBJECTS)
+libidirectfbinputdevice_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbinputdevice_requestor_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
+libidirectfbpalette_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbpalette_requestor_la_OBJECTS = \
+ idirectfbpalette_requestor.lo
+libidirectfbpalette_requestor_la_OBJECTS = \
+ $(am_libidirectfbpalette_requestor_la_OBJECTS)
+libidirectfbpalette_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbpalette_requestor_la_LDFLAGS) $(LDFLAGS) -o $@
+libidirectfbscreen_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbscreen_requestor_la_OBJECTS = \
+ idirectfbscreen_requestor.lo
+libidirectfbscreen_requestor_la_OBJECTS = \
+ $(am_libidirectfbscreen_requestor_la_OBJECTS)
+libidirectfbscreen_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbscreen_requestor_la_LDFLAGS) $(LDFLAGS) -o $@
+libidirectfbsurface_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbsurface_requestor_la_OBJECTS = \
+ idirectfbsurface_requestor.lo
+libidirectfbsurface_requestor_la_OBJECTS = \
+ $(am_libidirectfbsurface_requestor_la_OBJECTS)
+libidirectfbsurface_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbsurface_requestor_la_LDFLAGS) $(LDFLAGS) -o $@
+libidirectfbwindow_requestor_la_DEPENDENCIES = $(LIBS)
+am_libidirectfbwindow_requestor_la_OBJECTS = \
+ idirectfbwindow_requestor.lo
+libidirectfbwindow_requestor_la_OBJECTS = \
+ $(am_libidirectfbwindow_requestor_la_OBJECTS)
+libidirectfbwindow_requestor_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libidirectfbwindow_requestor_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libidirectfb_requestor_la_SOURCES) \
+ $(libidirectfbdatabuffer_requestor_la_SOURCES) \
+ $(libidirectfbdisplaylayer_requestor_la_SOURCES) \
+ $(libidirectfbeventbuffer_requestor_la_SOURCES) \
+ $(libidirectfbfont_requestor_la_SOURCES) \
+ $(libidirectfbimageprovider_requestor_la_SOURCES) \
+ $(libidirectfbinputdevice_requestor_la_SOURCES) \
+ $(libidirectfbpalette_requestor_la_SOURCES) \
+ $(libidirectfbscreen_requestor_la_SOURCES) \
+ $(libidirectfbsurface_requestor_la_SOURCES) \
+ $(libidirectfbwindow_requestor_la_SOURCES)
+DIST_SOURCES = $(libidirectfb_requestor_la_SOURCES) \
+ $(libidirectfbdatabuffer_requestor_la_SOURCES) \
+ $(libidirectfbdisplaylayer_requestor_la_SOURCES) \
+ $(libidirectfbeventbuffer_requestor_la_SOURCES) \
+ $(libidirectfbfont_requestor_la_SOURCES) \
+ $(libidirectfbimageprovider_requestor_la_SOURCES) \
+ $(libidirectfbinputdevice_requestor_la_SOURCES) \
+ $(libidirectfbpalette_requestor_la_SOURCES) \
+ $(libidirectfbscreen_requestor_la_SOURCES) \
+ $(libidirectfbsurface_requestor_la_SOURCES) \
+ $(libidirectfbwindow_requestor_la_SOURCES)
+idirectfbDATA_INSTALL = $(INSTALL_DATA)
+idirectfbdatabufferDATA_INSTALL = $(INSTALL_DATA)
+idirectfbdisplaylayerDATA_INSTALL = $(INSTALL_DATA)
+idirectfbeventbufferDATA_INSTALL = $(INSTALL_DATA)
+idirectfbfontDATA_INSTALL = $(INSTALL_DATA)
+idirectfbimageproviderDATA_INSTALL = $(INSTALL_DATA)
+idirectfbinputdeviceDATA_INSTALL = $(INSTALL_DATA)
+idirectfbpaletteDATA_INSTALL = $(INSTALL_DATA)
+idirectfbscreenDATA_INSTALL = $(INSTALL_DATA)
+idirectfbsurfaceDATA_INSTALL = $(INSTALL_DATA)
+idirectfbwindowDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(idirectfb_DATA) $(idirectfbdatabuffer_DATA) \
+ $(idirectfbdisplaylayer_DATA) $(idirectfbeventbuffer_DATA) \
+ $(idirectfbfont_DATA) $(idirectfbimageprovider_DATA) \
+ $(idirectfbinputdevice_DATA) $(idirectfbpalette_DATA) \
+ $(idirectfbscreen_DATA) $(idirectfbsurface_DATA) \
+ $(idirectfbwindow_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ASFLAGS = @ASFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@
+DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@
+DFB_LDFLAGS = @DFB_LDFLAGS@
+DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@
+DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@
+DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@
+DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@
+DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@
+DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@
+DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@
+DIRECTFB_VERSION = @DIRECTFB_VERSION@
+DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@
+DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@
+DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@
+DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@
+DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@
+DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@
+DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@
+DSYMUTIL = @DSYMUTIL@
+DYNLIB = @DYNLIB@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+FREETYPE_PROVIDER = @FREETYPE_PROVIDER@
+FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@
+FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@
+FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@
+GIF_PROVIDER = @GIF_PROVIDER@
+GREP = @GREP@
+HAVE_LINUX = @HAVE_LINUX@
+INCLUDEDIR = @INCLUDEDIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@
+JPEG_PROVIDER = @JPEG_PROVIDER@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPNG_CONFIG = @LIBPNG_CONFIG@
+LIBS = \
+ $(top_builddir)/lib/voodoo/libvoodoo.la \
+ $(top_builddir)/lib/direct/libdirect.la
+
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_BINARY = @LT_BINARY@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MAN2HTML = @MAN2HTML@
+MKDIR_P = @MKDIR_P@
+MODULEDIR = @MODULEDIR@
+MODULEDIRNAME = @MODULEDIRNAME@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+OSX_LIBS = @OSX_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PNG_PROVIDER = @PNG_PROVIDER@
+RANLIB = @RANLIB@
+RUNTIME_SYSROOT = @RUNTIME_SYSROOT@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SOPATH = @SOPATH@
+STRIP = @STRIP@
+SYSCONFDIR = @SYSCONFDIR@
+SYSFS_LIBS = @SYSFS_LIBS@
+THREADFLAGS = @THREADFLAGS@
+THREADLIB = @THREADLIB@
+TSLIB_CFLAGS = @TSLIB_CFLAGS@
+TSLIB_LIBS = @TSLIB_LIBS@
+VERSION = @VERSION@
+VNC_CFLAGS = @VNC_CFLAGS@
+VNC_CONFIG = @VNC_CONFIG@
+VNC_LIBS = @VNC_LIBS@
+X11_CFLAGS = @X11_CFLAGS@
+X11_LIBS = @X11_LIBS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INTERFACES_DIR = $(MODULEDIR)/interfaces
+idirectfbdir = $(INTERFACES_DIR)/IDirectFB
+idirectfbdatabufferdir = $(INTERFACES_DIR)/IDirectFBDataBuffer
+idirectfbdisplaylayerdir = $(INTERFACES_DIR)/IDirectFBDisplayLayer
+idirectfbeventbufferdir = $(INTERFACES_DIR)/IDirectFBEventBuffer
+idirectfbfontdir = $(INTERFACES_DIR)/IDirectFBFont
+idirectfbimageproviderdir = $(INTERFACES_DIR)/IDirectFBImageProvider
+idirectfbinputdevicedir = $(INTERFACES_DIR)/IDirectFBInputDevice
+idirectfbpalettedir = $(INTERFACES_DIR)/IDirectFBPalette
+idirectfbscreendir = $(INTERFACES_DIR)/IDirectFBScreen
+idirectfbsurfacedir = $(INTERFACES_DIR)/IDirectFBSurface
+idirectfbwindowdir = $(INTERFACES_DIR)/IDirectFBWindow
+idirectfbvideoproviderdir = $(INTERFACES_DIR)/IDirectFBVideoProvider
+INCLUDES = \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/proxy/dispatcher \
+ -DDATADIR=\"${RUNTIME_SYSROOT}@DATADIR@\"
+
+idirectfb_LTLIBRARIES = \
+ libidirectfb_requestor.la
+
+idirectfbdatabuffer_LTLIBRARIES = \
+ libidirectfbdatabuffer_requestor.la
+
+idirectfbdisplaylayer_LTLIBRARIES = \
+ libidirectfbdisplaylayer_requestor.la
+
+idirectfbeventbuffer_LTLIBRARIES = \
+ libidirectfbeventbuffer_requestor.la
+
+idirectfbfont_LTLIBRARIES = \
+ libidirectfbfont_requestor.la
+
+idirectfbimageprovider_LTLIBRARIES = \
+ libidirectfbimageprovider_requestor.la
+
+idirectfbinputdevice_LTLIBRARIES = \
+ libidirectfbinputdevice_requestor.la
+
+idirectfbpalette_LTLIBRARIES = \
+ libidirectfbpalette_requestor.la
+
+idirectfbscreen_LTLIBRARIES = \
+ libidirectfbscreen_requestor.la
+
+idirectfbsurface_LTLIBRARIES = \
+ libidirectfbsurface_requestor.la
+
+idirectfbwindow_LTLIBRARIES = \
+ libidirectfbwindow_requestor.la
+
+@BUILD_STATIC_TRUE@idirectfb_DATA = libidirectfb_requestor.o
+@BUILD_STATIC_TRUE@idirectfbdatabuffer_DATA = libidirectfbdatabuffer_requestor.o
+@BUILD_STATIC_TRUE@idirectfbdisplaylayer_DATA = libidirectfbdisplaylayer_requestor.o
+@BUILD_STATIC_TRUE@idirectfbeventbuffer_DATA = libidirectfbeventbuffer_requestor.o
+@BUILD_STATIC_TRUE@idirectfbfont_DATA = libidirectfbfont_requestor.o
+@BUILD_STATIC_TRUE@idirectfbimageprovider_DATA = libidirectfbimageprovider_requestor.o
+@BUILD_STATIC_TRUE@idirectfbinputdevice_DATA = libidirectfbinputdevice_requestor.o
+@BUILD_STATIC_TRUE@idirectfbpalette_DATA = libidirectfbpalette_requestor.o
+@BUILD_STATIC_TRUE@idirectfbscreen_DATA = libidirectfbscreen_requestor.o
+@BUILD_STATIC_TRUE@idirectfbsurface_DATA = libidirectfbsurface_requestor.o
+@BUILD_STATIC_TRUE@idirectfbwindow_DATA = libidirectfbwindow_requestor.o
+libidirectfb_requestor_la_SOURCES = idirectfb_requestor.c
+libidirectfb_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfb_requestor_la_LIBADD = $(LIBS)
+libidirectfbdatabuffer_requestor_la_SOURCES = idirectfbdatabuffer_requestor.c
+libidirectfbdatabuffer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbdatabuffer_requestor_la_LIBADD = $(LIBS)
+libidirectfbdisplaylayer_requestor_la_SOURCES = idirectfbdisplaylayer_requestor.c idirectfbdisplaylayer_requestor.h
+libidirectfbdisplaylayer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbdisplaylayer_requestor_la_LIBADD = $(LIBS)
+libidirectfbeventbuffer_requestor_la_SOURCES = idirectfbeventbuffer_requestor.c idirectfbeventbuffer_requestor.h
+libidirectfbeventbuffer_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbeventbuffer_requestor_la_LIBADD = $(LIBS)
+libidirectfbfont_requestor_la_SOURCES = idirectfbfont_requestor.c idirectfbfont_requestor.h
+libidirectfbfont_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbfont_requestor_la_LIBADD = $(LIBS)
+libidirectfbimageprovider_requestor_la_SOURCES = idirectfbimageprovider_requestor.c
+libidirectfbimageprovider_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbimageprovider_requestor_la_LIBADD = $(LIBS)
+libidirectfbinputdevice_requestor_la_SOURCES = idirectfbinputdevice_requestor.c idirectfbinputdevice_requestor.h
+libidirectfbinputdevice_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbinputdevice_requestor_la_LIBADD = $(LIBS)
+libidirectfbpalette_requestor_la_SOURCES = idirectfbpalette_requestor.c idirectfbpalette_requestor.h
+libidirectfbpalette_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbpalette_requestor_la_LIBADD = $(LIBS)
+libidirectfbscreen_requestor_la_SOURCES = idirectfbscreen_requestor.c
+libidirectfbscreen_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbscreen_requestor_la_LIBADD = $(LIBS)
+libidirectfbsurface_requestor_la_SOURCES = idirectfbsurface_requestor.c idirectfbsurface_requestor.h
+libidirectfbsurface_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbsurface_requestor_la_LIBADD = $(LIBS)
+libidirectfbwindow_requestor_la_SOURCES = idirectfbwindow_requestor.c idirectfbwindow_requestor.h
+libidirectfbwindow_requestor_la_LDFLAGS = -avoid-version -module
+libidirectfbwindow_requestor_la_LIBADD = $(LIBS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu proxy/requestor/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu proxy/requestor/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-idirectfbLTLIBRARIES: $(idirectfb_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdir)"
+ @list='$(idirectfb_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfb_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbdir)/$$p"; \
+ done
+
+clean-idirectfbLTLIBRARIES:
+ -test -z "$(idirectfb_LTLIBRARIES)" || rm -f $(idirectfb_LTLIBRARIES)
+ @list='$(idirectfb_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbdatabufferLTLIBRARIES: $(idirectfbdatabuffer_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdatabufferdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdatabufferdir)"
+ @list='$(idirectfbdatabuffer_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbdatabufferLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbdatabufferdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbdatabufferLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbdatabufferdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbdatabufferLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbdatabuffer_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbdatabufferdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbdatabufferdir)/$$p"; \
+ done
+
+clean-idirectfbdatabufferLTLIBRARIES:
+ -test -z "$(idirectfbdatabuffer_LTLIBRARIES)" || rm -f $(idirectfbdatabuffer_LTLIBRARIES)
+ @list='$(idirectfbdatabuffer_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbdisplaylayerLTLIBRARIES: $(idirectfbdisplaylayer_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdisplaylayerdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdisplaylayerdir)"
+ @list='$(idirectfbdisplaylayer_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbdisplaylayerLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbdisplaylayerLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbdisplaylayerLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbdisplaylayer_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbdisplaylayerdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbdisplaylayerdir)/$$p"; \
+ done
+
+clean-idirectfbdisplaylayerLTLIBRARIES:
+ -test -z "$(idirectfbdisplaylayer_LTLIBRARIES)" || rm -f $(idirectfbdisplaylayer_LTLIBRARIES)
+ @list='$(idirectfbdisplaylayer_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbeventbufferLTLIBRARIES: $(idirectfbeventbuffer_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbeventbufferdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbeventbufferdir)"
+ @list='$(idirectfbeventbuffer_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbeventbufferLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbeventbufferdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbeventbufferLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbeventbufferdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbeventbufferLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbeventbuffer_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbeventbufferdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbeventbufferdir)/$$p"; \
+ done
+
+clean-idirectfbeventbufferLTLIBRARIES:
+ -test -z "$(idirectfbeventbuffer_LTLIBRARIES)" || rm -f $(idirectfbeventbuffer_LTLIBRARIES)
+ @list='$(idirectfbeventbuffer_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbfontLTLIBRARIES: $(idirectfbfont_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbfontdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbfontdir)"
+ @list='$(idirectfbfont_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbfontLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbfontdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbfontLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbfontdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbfontLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbfont_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbfontdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbfontdir)/$$p"; \
+ done
+
+clean-idirectfbfontLTLIBRARIES:
+ -test -z "$(idirectfbfont_LTLIBRARIES)" || rm -f $(idirectfbfont_LTLIBRARIES)
+ @list='$(idirectfbfont_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbimageproviderLTLIBRARIES: $(idirectfbimageprovider_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbimageproviderdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbimageproviderdir)"
+ @list='$(idirectfbimageprovider_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbimageproviderLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbimageproviderdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbimageproviderLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbimageproviderdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbimageproviderLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbimageprovider_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbimageproviderdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbimageproviderdir)/$$p"; \
+ done
+
+clean-idirectfbimageproviderLTLIBRARIES:
+ -test -z "$(idirectfbimageprovider_LTLIBRARIES)" || rm -f $(idirectfbimageprovider_LTLIBRARIES)
+ @list='$(idirectfbimageprovider_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbinputdeviceLTLIBRARIES: $(idirectfbinputdevice_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbinputdevicedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbinputdevicedir)"
+ @list='$(idirectfbinputdevice_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbinputdeviceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbinputdevicedir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbinputdeviceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbinputdevicedir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbinputdeviceLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbinputdevice_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbinputdevicedir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbinputdevicedir)/$$p"; \
+ done
+
+clean-idirectfbinputdeviceLTLIBRARIES:
+ -test -z "$(idirectfbinputdevice_LTLIBRARIES)" || rm -f $(idirectfbinputdevice_LTLIBRARIES)
+ @list='$(idirectfbinputdevice_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbpaletteLTLIBRARIES: $(idirectfbpalette_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbpalettedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbpalettedir)"
+ @list='$(idirectfbpalette_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbpaletteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbpalettedir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbpaletteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbpalettedir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbpaletteLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbpalette_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbpalettedir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbpalettedir)/$$p"; \
+ done
+
+clean-idirectfbpaletteLTLIBRARIES:
+ -test -z "$(idirectfbpalette_LTLIBRARIES)" || rm -f $(idirectfbpalette_LTLIBRARIES)
+ @list='$(idirectfbpalette_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbscreenLTLIBRARIES: $(idirectfbscreen_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbscreendir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbscreendir)"
+ @list='$(idirectfbscreen_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbscreenLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbscreendir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbscreenLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbscreendir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbscreenLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbscreen_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbscreendir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbscreendir)/$$p"; \
+ done
+
+clean-idirectfbscreenLTLIBRARIES:
+ -test -z "$(idirectfbscreen_LTLIBRARIES)" || rm -f $(idirectfbscreen_LTLIBRARIES)
+ @list='$(idirectfbscreen_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbsurfaceLTLIBRARIES: $(idirectfbsurface_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbsurfacedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbsurfacedir)"
+ @list='$(idirectfbsurface_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbsurfaceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbsurfacedir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbsurfaceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbsurfacedir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbsurfaceLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbsurface_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbsurfacedir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbsurfacedir)/$$p"; \
+ done
+
+clean-idirectfbsurfaceLTLIBRARIES:
+ -test -z "$(idirectfbsurface_LTLIBRARIES)" || rm -f $(idirectfbsurface_LTLIBRARIES)
+ @list='$(idirectfbsurface_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-idirectfbwindowLTLIBRARIES: $(idirectfbwindow_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbwindowdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbwindowdir)"
+ @list='$(idirectfbwindow_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbwindowLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idirectfbwindowdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(idirectfbwindowLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idirectfbwindowdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idirectfbwindowLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbwindow_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(idirectfbwindowdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(idirectfbwindowdir)/$$p"; \
+ done
+
+clean-idirectfbwindowLTLIBRARIES:
+ -test -z "$(idirectfbwindow_LTLIBRARIES)" || rm -f $(idirectfbwindow_LTLIBRARIES)
+ @list='$(idirectfbwindow_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libidirectfb_requestor.la: $(libidirectfb_requestor_la_OBJECTS) $(libidirectfb_requestor_la_DEPENDENCIES)
+ $(libidirectfb_requestor_la_LINK) -rpath $(idirectfbdir) $(libidirectfb_requestor_la_OBJECTS) $(libidirectfb_requestor_la_LIBADD) $(LIBS)
+libidirectfbdatabuffer_requestor.la: $(libidirectfbdatabuffer_requestor_la_OBJECTS) $(libidirectfbdatabuffer_requestor_la_DEPENDENCIES)
+ $(libidirectfbdatabuffer_requestor_la_LINK) -rpath $(idirectfbdatabufferdir) $(libidirectfbdatabuffer_requestor_la_OBJECTS) $(libidirectfbdatabuffer_requestor_la_LIBADD) $(LIBS)
+libidirectfbdisplaylayer_requestor.la: $(libidirectfbdisplaylayer_requestor_la_OBJECTS) $(libidirectfbdisplaylayer_requestor_la_DEPENDENCIES)
+ $(libidirectfbdisplaylayer_requestor_la_LINK) -rpath $(idirectfbdisplaylayerdir) $(libidirectfbdisplaylayer_requestor_la_OBJECTS) $(libidirectfbdisplaylayer_requestor_la_LIBADD) $(LIBS)
+libidirectfbeventbuffer_requestor.la: $(libidirectfbeventbuffer_requestor_la_OBJECTS) $(libidirectfbeventbuffer_requestor_la_DEPENDENCIES)
+ $(libidirectfbeventbuffer_requestor_la_LINK) -rpath $(idirectfbeventbufferdir) $(libidirectfbeventbuffer_requestor_la_OBJECTS) $(libidirectfbeventbuffer_requestor_la_LIBADD) $(LIBS)
+libidirectfbfont_requestor.la: $(libidirectfbfont_requestor_la_OBJECTS) $(libidirectfbfont_requestor_la_DEPENDENCIES)
+ $(libidirectfbfont_requestor_la_LINK) -rpath $(idirectfbfontdir) $(libidirectfbfont_requestor_la_OBJECTS) $(libidirectfbfont_requestor_la_LIBADD) $(LIBS)
+libidirectfbimageprovider_requestor.la: $(libidirectfbimageprovider_requestor_la_OBJECTS) $(libidirectfbimageprovider_requestor_la_DEPENDENCIES)
+ $(libidirectfbimageprovider_requestor_la_LINK) -rpath $(idirectfbimageproviderdir) $(libidirectfbimageprovider_requestor_la_OBJECTS) $(libidirectfbimageprovider_requestor_la_LIBADD) $(LIBS)
+libidirectfbinputdevice_requestor.la: $(libidirectfbinputdevice_requestor_la_OBJECTS) $(libidirectfbinputdevice_requestor_la_DEPENDENCIES)
+ $(libidirectfbinputdevice_requestor_la_LINK) -rpath $(idirectfbinputdevicedir) $(libidirectfbinputdevice_requestor_la_OBJECTS) $(libidirectfbinputdevice_requestor_la_LIBADD) $(LIBS)
+libidirectfbpalette_requestor.la: $(libidirectfbpalette_requestor_la_OBJECTS) $(libidirectfbpalette_requestor_la_DEPENDENCIES)
+ $(libidirectfbpalette_requestor_la_LINK) -rpath $(idirectfbpalettedir) $(libidirectfbpalette_requestor_la_OBJECTS) $(libidirectfbpalette_requestor_la_LIBADD) $(LIBS)
+libidirectfbscreen_requestor.la: $(libidirectfbscreen_requestor_la_OBJECTS) $(libidirectfbscreen_requestor_la_DEPENDENCIES)
+ $(libidirectfbscreen_requestor_la_LINK) -rpath $(idirectfbscreendir) $(libidirectfbscreen_requestor_la_OBJECTS) $(libidirectfbscreen_requestor_la_LIBADD) $(LIBS)
+libidirectfbsurface_requestor.la: $(libidirectfbsurface_requestor_la_OBJECTS) $(libidirectfbsurface_requestor_la_DEPENDENCIES)
+ $(libidirectfbsurface_requestor_la_LINK) -rpath $(idirectfbsurfacedir) $(libidirectfbsurface_requestor_la_OBJECTS) $(libidirectfbsurface_requestor_la_LIBADD) $(LIBS)
+libidirectfbwindow_requestor.la: $(libidirectfbwindow_requestor_la_OBJECTS) $(libidirectfbwindow_requestor_la_DEPENDENCIES)
+ $(libidirectfbwindow_requestor_la_LINK) -rpath $(idirectfbwindowdir) $(libidirectfbwindow_requestor_la_OBJECTS) $(libidirectfbwindow_requestor_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfb_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbdatabuffer_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbdisplaylayer_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbeventbuffer_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbfont_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbimageprovider_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbinputdevice_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbpalette_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbscreen_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbsurface_requestor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idirectfbwindow_requestor.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-idirectfbDATA: $(idirectfb_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdir)"
+ @list='$(idirectfb_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbdir)/$$f'"; \
+ $(idirectfbDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbdir)/$$f"; \
+ done
+
+uninstall-idirectfbDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfb_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbdir)/$$f"; \
+ done
+install-idirectfbdatabufferDATA: $(idirectfbdatabuffer_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdatabufferdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdatabufferdir)"
+ @list='$(idirectfbdatabuffer_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbdatabufferDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbdatabufferdir)/$$f'"; \
+ $(idirectfbdatabufferDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbdatabufferdir)/$$f"; \
+ done
+
+uninstall-idirectfbdatabufferDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbdatabuffer_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbdatabufferdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbdatabufferdir)/$$f"; \
+ done
+install-idirectfbdisplaylayerDATA: $(idirectfbdisplaylayer_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbdisplaylayerdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbdisplaylayerdir)"
+ @list='$(idirectfbdisplaylayer_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbdisplaylayerDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f'"; \
+ $(idirectfbdisplaylayerDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f"; \
+ done
+
+uninstall-idirectfbdisplaylayerDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbdisplaylayer_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbdisplaylayerdir)/$$f"; \
+ done
+install-idirectfbeventbufferDATA: $(idirectfbeventbuffer_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbeventbufferdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbeventbufferdir)"
+ @list='$(idirectfbeventbuffer_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbeventbufferDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbeventbufferdir)/$$f'"; \
+ $(idirectfbeventbufferDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbeventbufferdir)/$$f"; \
+ done
+
+uninstall-idirectfbeventbufferDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbeventbuffer_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbeventbufferdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbeventbufferdir)/$$f"; \
+ done
+install-idirectfbfontDATA: $(idirectfbfont_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbfontdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbfontdir)"
+ @list='$(idirectfbfont_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbfontDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbfontdir)/$$f'"; \
+ $(idirectfbfontDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbfontdir)/$$f"; \
+ done
+
+uninstall-idirectfbfontDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbfont_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbfontdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbfontdir)/$$f"; \
+ done
+install-idirectfbimageproviderDATA: $(idirectfbimageprovider_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbimageproviderdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbimageproviderdir)"
+ @list='$(idirectfbimageprovider_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbimageproviderDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbimageproviderdir)/$$f'"; \
+ $(idirectfbimageproviderDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbimageproviderdir)/$$f"; \
+ done
+
+uninstall-idirectfbimageproviderDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbimageprovider_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbimageproviderdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbimageproviderdir)/$$f"; \
+ done
+install-idirectfbinputdeviceDATA: $(idirectfbinputdevice_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbinputdevicedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbinputdevicedir)"
+ @list='$(idirectfbinputdevice_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbinputdeviceDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbinputdevicedir)/$$f'"; \
+ $(idirectfbinputdeviceDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbinputdevicedir)/$$f"; \
+ done
+
+uninstall-idirectfbinputdeviceDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbinputdevice_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbinputdevicedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbinputdevicedir)/$$f"; \
+ done
+install-idirectfbpaletteDATA: $(idirectfbpalette_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbpalettedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbpalettedir)"
+ @list='$(idirectfbpalette_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbpaletteDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbpalettedir)/$$f'"; \
+ $(idirectfbpaletteDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbpalettedir)/$$f"; \
+ done
+
+uninstall-idirectfbpaletteDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbpalette_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbpalettedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbpalettedir)/$$f"; \
+ done
+install-idirectfbscreenDATA: $(idirectfbscreen_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbscreendir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbscreendir)"
+ @list='$(idirectfbscreen_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbscreenDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbscreendir)/$$f'"; \
+ $(idirectfbscreenDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbscreendir)/$$f"; \
+ done
+
+uninstall-idirectfbscreenDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbscreen_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbscreendir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbscreendir)/$$f"; \
+ done
+install-idirectfbsurfaceDATA: $(idirectfbsurface_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbsurfacedir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbsurfacedir)"
+ @list='$(idirectfbsurface_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbsurfaceDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbsurfacedir)/$$f'"; \
+ $(idirectfbsurfaceDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbsurfacedir)/$$f"; \
+ done
+
+uninstall-idirectfbsurfaceDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbsurface_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbsurfacedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbsurfacedir)/$$f"; \
+ done
+install-idirectfbwindowDATA: $(idirectfbwindow_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(idirectfbwindowdir)" || $(MKDIR_P) "$(DESTDIR)$(idirectfbwindowdir)"
+ @list='$(idirectfbwindow_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(idirectfbwindowDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(idirectfbwindowdir)/$$f'"; \
+ $(idirectfbwindowDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(idirectfbwindowdir)/$$f"; \
+ done
+
+uninstall-idirectfbwindowDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(idirectfbwindow_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(idirectfbwindowdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(idirectfbwindowdir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(idirectfbdir)" "$(DESTDIR)$(idirectfbdatabufferdir)" "$(DESTDIR)$(idirectfbdisplaylayerdir)" "$(DESTDIR)$(idirectfbeventbufferdir)" "$(DESTDIR)$(idirectfbfontdir)" "$(DESTDIR)$(idirectfbimageproviderdir)" "$(DESTDIR)$(idirectfbinputdevicedir)" "$(DESTDIR)$(idirectfbpalettedir)" "$(DESTDIR)$(idirectfbscreendir)" "$(DESTDIR)$(idirectfbsurfacedir)" "$(DESTDIR)$(idirectfbwindowdir)" "$(DESTDIR)$(idirectfbdir)" "$(DESTDIR)$(idirectfbdatabufferdir)" "$(DESTDIR)$(idirectfbdisplaylayerdir)" "$(DESTDIR)$(idirectfbeventbufferdir)" "$(DESTDIR)$(idirectfbfontdir)" "$(DESTDIR)$(idirectfbimageproviderdir)" "$(DESTDIR)$(idirectfbinputdevicedir)" "$(DESTDIR)$(idirectfbpalettedir)" "$(DESTDIR)$(idirectfbscreendir)" "$(DESTDIR)$(idirectfbsurfacedir)" "$(DESTDIR)$(idirectfbwindowdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-idirectfbLTLIBRARIES \
+ clean-idirectfbdatabufferLTLIBRARIES \
+ clean-idirectfbdisplaylayerLTLIBRARIES \
+ clean-idirectfbeventbufferLTLIBRARIES \
+ clean-idirectfbfontLTLIBRARIES \
+ clean-idirectfbimageproviderLTLIBRARIES \
+ clean-idirectfbinputdeviceLTLIBRARIES \
+ clean-idirectfbpaletteLTLIBRARIES \
+ clean-idirectfbscreenLTLIBRARIES \
+ clean-idirectfbsurfaceLTLIBRARIES \
+ clean-idirectfbwindowLTLIBRARIES clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-idirectfbDATA install-idirectfbLTLIBRARIES \
+ install-idirectfbdatabufferDATA \
+ install-idirectfbdatabufferLTLIBRARIES \
+ install-idirectfbdisplaylayerDATA \
+ install-idirectfbdisplaylayerLTLIBRARIES \
+ install-idirectfbeventbufferDATA \
+ install-idirectfbeventbufferLTLIBRARIES \
+ install-idirectfbfontDATA install-idirectfbfontLTLIBRARIES \
+ install-idirectfbimageproviderDATA \
+ install-idirectfbimageproviderLTLIBRARIES \
+ install-idirectfbinputdeviceDATA \
+ install-idirectfbinputdeviceLTLIBRARIES \
+ install-idirectfbpaletteDATA \
+ install-idirectfbpaletteLTLIBRARIES \
+ install-idirectfbscreenDATA install-idirectfbscreenLTLIBRARIES \
+ install-idirectfbsurfaceDATA \
+ install-idirectfbsurfaceLTLIBRARIES \
+ install-idirectfbwindowDATA install-idirectfbwindowLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-idirectfbDATA uninstall-idirectfbLTLIBRARIES \
+ uninstall-idirectfbdatabufferDATA \
+ uninstall-idirectfbdatabufferLTLIBRARIES \
+ uninstall-idirectfbdisplaylayerDATA \
+ uninstall-idirectfbdisplaylayerLTLIBRARIES \
+ uninstall-idirectfbeventbufferDATA \
+ uninstall-idirectfbeventbufferLTLIBRARIES \
+ uninstall-idirectfbfontDATA uninstall-idirectfbfontLTLIBRARIES \
+ uninstall-idirectfbimageproviderDATA \
+ uninstall-idirectfbimageproviderLTLIBRARIES \
+ uninstall-idirectfbinputdeviceDATA \
+ uninstall-idirectfbinputdeviceLTLIBRARIES \
+ uninstall-idirectfbpaletteDATA \
+ uninstall-idirectfbpaletteLTLIBRARIES \
+ uninstall-idirectfbscreenDATA \
+ uninstall-idirectfbscreenLTLIBRARIES \
+ uninstall-idirectfbsurfaceDATA \
+ uninstall-idirectfbsurfaceLTLIBRARIES \
+ uninstall-idirectfbwindowDATA \
+ uninstall-idirectfbwindowLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-idirectfbLTLIBRARIES \
+ clean-idirectfbdatabufferLTLIBRARIES \
+ clean-idirectfbdisplaylayerLTLIBRARIES \
+ clean-idirectfbeventbufferLTLIBRARIES \
+ clean-idirectfbfontLTLIBRARIES \
+ clean-idirectfbimageproviderLTLIBRARIES \
+ clean-idirectfbinputdeviceLTLIBRARIES \
+ clean-idirectfbpaletteLTLIBRARIES \
+ clean-idirectfbscreenLTLIBRARIES \
+ clean-idirectfbsurfaceLTLIBRARIES \
+ clean-idirectfbwindowLTLIBRARIES clean-libtool ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-idirectfbDATA \
+ install-idirectfbLTLIBRARIES install-idirectfbdatabufferDATA \
+ install-idirectfbdatabufferLTLIBRARIES \
+ install-idirectfbdisplaylayerDATA \
+ install-idirectfbdisplaylayerLTLIBRARIES \
+ install-idirectfbeventbufferDATA \
+ install-idirectfbeventbufferLTLIBRARIES \
+ install-idirectfbfontDATA install-idirectfbfontLTLIBRARIES \
+ install-idirectfbimageproviderDATA \
+ install-idirectfbimageproviderLTLIBRARIES \
+ install-idirectfbinputdeviceDATA \
+ install-idirectfbinputdeviceLTLIBRARIES \
+ install-idirectfbpaletteDATA \
+ install-idirectfbpaletteLTLIBRARIES \
+ install-idirectfbscreenDATA install-idirectfbscreenLTLIBRARIES \
+ install-idirectfbsurfaceDATA \
+ install-idirectfbsurfaceLTLIBRARIES \
+ install-idirectfbwindowDATA install-idirectfbwindowLTLIBRARIES \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-idirectfbDATA \
+ uninstall-idirectfbLTLIBRARIES \
+ uninstall-idirectfbdatabufferDATA \
+ uninstall-idirectfbdatabufferLTLIBRARIES \
+ uninstall-idirectfbdisplaylayerDATA \
+ uninstall-idirectfbdisplaylayerLTLIBRARIES \
+ uninstall-idirectfbeventbufferDATA \
+ uninstall-idirectfbeventbufferLTLIBRARIES \
+ uninstall-idirectfbfontDATA uninstall-idirectfbfontLTLIBRARIES \
+ uninstall-idirectfbimageproviderDATA \
+ uninstall-idirectfbimageproviderLTLIBRARIES \
+ uninstall-idirectfbinputdeviceDATA \
+ uninstall-idirectfbinputdeviceLTLIBRARIES \
+ uninstall-idirectfbpaletteDATA \
+ uninstall-idirectfbpaletteLTLIBRARIES \
+ uninstall-idirectfbscreenDATA \
+ uninstall-idirectfbscreenLTLIBRARIES \
+ uninstall-idirectfbsurfaceDATA \
+ uninstall-idirectfbsurfaceLTLIBRARIES \
+ uninstall-idirectfbwindowDATA \
+ uninstall-idirectfbwindowLTLIBRARIES
+
+%.o: .libs/%.a %.la
+ rm -f $<.tmp/*.o
+ if test -d $<.tmp; then rmdir $<.tmp; fi
+ mkdir $<.tmp
+ (cd $<.tmp && $(AR) x ../../$<)
+ $(LD) -o $@ -r $<.tmp/*.o
+ rm -f $<.tmp/*.o && rmdir $<.tmp
+
+.PHONY: $(LTLIBRARIES:%.la=.libs/%.a)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Source/DirectFB/proxy/requestor/idirectfb_requestor.c b/Source/DirectFB/proxy/requestor/idirectfb_requestor.c
new file mode 100755
index 0000000..5e0796c
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfb_requestor.c
@@ -0,0 +1,1045 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <misc/conf.h>
+
+#include <input/idirectfbinputbuffer.h>
+#include <media/idirectfbdatabuffer.h>
+
+#include <idirectfb.h>
+#include <idirectfb_dispatcher.h>
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFB *thiz, const char *host, int session );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFB, Requestor )
+
+
+/**************************************************************************************************/
+
+/*
+ * private data struct of IDirectFB_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooClient *client;
+ VoodooManager *manager;
+
+ VoodooInstanceID instance;
+
+ DFBCooperativeLevel level; /* current cooperative level */
+} IDirectFB_Requestor_data;
+
+/**************************************************************************************************/
+
+static void
+IDirectFB_Requestor_Destruct( IDirectFB *thiz )
+{
+ IDirectFB_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ voodoo_client_destroy( data->client );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFB_Requestor_AddRef( IDirectFB *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFB_Requestor_Release( IDirectFB *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFB_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFB_Requestor_SetCooperativeLevel( IDirectFB *thiz,
+ DFBCooperativeLevel level )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (level == data->level)
+ return DFB_OK;
+
+ switch (level) {
+ case DFSCL_NORMAL:
+ break;
+
+ case DFSCL_FULLSCREEN:
+ case DFSCL_EXCLUSIVE:
+ if (dfb_config->force_windowed || dfb_config->force_desktop)
+ return DFB_ACCESSDENIED;
+
+ break;
+
+ default:
+ return DFB_INVARG;
+ }
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_SetCooperativeLevel, VREQ_RESPOND, &response,
+ VMBT_INT, level,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ data->level = level;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetDeviceDescription( IDirectFB *thiz,
+ DFBGraphicsDeviceDescription *ret_desc )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_GetDeviceDescription, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK) {
+ VoodooMessageParser parser;
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, ret_desc, sizeof(DFBGraphicsDeviceDescription) );
+ VOODOO_PARSER_END( parser );
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_EnumVideoModes( IDirectFB *thiz,
+ DFBVideoModeCallback callbackfunc,
+ void *callbackdata )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int i, num;
+ IDirectFB_Dispatcher_EnumVideoModes_Item *items;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!callbackfunc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_EnumVideoModes, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, num );
+
+ items = D_MALLOC( sizeof(*items) * num );
+ if (items)
+ VOODOO_PARSER_READ_DATA( parser, items, sizeof(*items) * num );
+ else
+ ret = D_OOM();
+
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (items) {
+ for (i=0; i<num; i++) {
+ if (callbackfunc( items[i].width, items[i].height, items[i].bpp, callbackdata ) == DFENUM_CANCEL)
+ break;
+ }
+
+ D_FREE( items );
+ }
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_SetVideoMode( IDirectFB *thiz,
+ int width,
+ int height,
+ int bpp )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (width < 1 || height < 1 || bpp < 1)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_SetVideoMode, VREQ_RESPOND, &response,
+ VMBT_INT, width,
+ VMBT_INT, height,
+ VMBT_INT, bpp,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateSurface( IDirectFB *thiz,
+ const DFBSurfaceDescription *real_desc,
+ IDirectFBSurface **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooInstanceID instance_id;
+ DFBSurfaceDescription desc;
+ DFBSurfaceCapabilities caps = DSCAPS_NONE;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!real_desc || !ret_interface)
+ return DFB_INVARG;
+
+ direct_memcpy( &desc, real_desc, sizeof(DFBSurfaceDescription) );
+
+ if (desc.flags & (DSDESC_PALETTE | DSDESC_PREALLOCATED))
+ D_ONCE( "DSDESC_PALETTE and DSDESC_PREALLOCATED not supported yet" );
+
+ if (desc.flags & DSDESC_CAPS)
+ caps = desc.caps;
+
+ if (caps & DSCAPS_PRIMARY) {
+ if (!(desc.flags & DSDESC_WIDTH) && dfb_config->mode.width) {
+ desc.flags |= DSDESC_WIDTH;
+ desc.width = dfb_config->mode.width;
+ }
+
+ if (!(desc.flags & DSDESC_HEIGHT) && dfb_config->mode.height) {
+ desc.flags |= DSDESC_HEIGHT;
+ desc.height = dfb_config->mode.height;
+ }
+ }
+
+ if (!(desc.flags & DSDESC_PIXELFORMAT) && dfb_config->mode.format != DSPF_UNKNOWN) {
+ desc.flags |= DSDESC_PIXELFORMAT;
+ desc.pixelformat = dfb_config->mode.format;
+ }
+
+ if (!(desc.flags & DSDESC_RESOURCE_ID)) {
+ desc.flags |= DSDESC_RESOURCE_ID;
+ desc.resource_id = 1100;
+ }
+
+ D_INFO( "IDirectFB_Requestor_CreateSurface: Using resource ID %lu\n", desc.resource_id );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_CreateSurface, VREQ_RESPOND, &response,
+ VMBT_DFBSurfaceDescription( desc ),
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ /* Copy and finish as we do our next request in surface constructor already! */
+ instance_id = response->instance;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBSurface",
+ instance_id, thiz, &interface_ptr );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreatePalette( IDirectFB *thiz,
+ const DFBPaletteDescription *desc,
+ IDirectFBPalette **interface_ptr )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!interface_ptr)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_EnumScreens( IDirectFB *thiz,
+ DFBScreenCallback callbackfunc,
+ void *callbackdata )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int i, num;
+ IDirectFB_Dispatcher_EnumScreens_Item *items;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!callbackfunc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_EnumScreens, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, num );
+
+ items = D_MALLOC( sizeof(*items) * num );
+ if (items)
+ VOODOO_PARSER_READ_DATA( parser, items, sizeof(*items) * num );
+ else
+ ret = D_OOM();
+
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (items) {
+ for (i=0; i<num; i++) {
+ if (callbackfunc( items[i].screen_id, items[i].desc, callbackdata ) == DFENUM_CANCEL)
+ break;
+ }
+
+ D_FREE( items );
+ }
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetScreen( IDirectFB *thiz,
+ DFBScreenID id,
+ IDirectFBScreen **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_GetScreen, VREQ_RESPOND, &response,
+ VMBT_ID, id,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBScreen",
+ response->instance, thiz, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_EnumDisplayLayers( IDirectFB *thiz,
+ DFBDisplayLayerCallback callbackfunc,
+ void *callbackdata )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!callbackfunc)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetDisplayLayer( IDirectFB *thiz,
+ DFBDisplayLayerID id,
+ IDirectFBDisplayLayer **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_GetDisplayLayer, VREQ_RESPOND, &response,
+ VMBT_ID, id,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBDisplayLayer",
+ response->instance, thiz, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_EnumInputDevices( IDirectFB *thiz,
+ DFBInputDeviceCallback callbackfunc,
+ void *callbackdata )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int i, num;
+ IDirectFB_Dispatcher_EnumInputDevices_Item *items;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!callbackfunc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_EnumInputDevices, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ if (response->result) {
+ voodoo_manager_finish_request( data->manager, response );
+ return response->result;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, num );
+
+ items = D_MALLOC( sizeof(*items) * num );
+ if (items)
+ VOODOO_PARSER_READ_DATA( parser, items, sizeof(*items) * num );
+ else
+ ret = D_OOM();
+
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (items) {
+ for (i=0; i<num; i++) {
+ if (callbackfunc( items[i].device_id, items[i].desc, callbackdata ) == DFENUM_CANCEL)
+ break;
+ }
+
+ D_FREE( items );
+ }
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetInputDevice( IDirectFB *thiz,
+ DFBInputDeviceID id,
+ IDirectFBInputDevice **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_GetInputDevice, VREQ_RESPOND, &response,
+ VMBT_ID, id,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBInputDevice",
+ response->instance, thiz, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateEventBuffer( IDirectFB *thiz,
+ IDirectFBEventBuffer **ret_interface)
+{
+ DFBResult ret;
+ IDirectFBEventBuffer *buffer;
+ IDirectFBEventBuffer *dispatcher;
+ VoodooInstanceID instance;
+ void *ptr;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ /* Create the real interface. */
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBEventBuffer );
+
+ IDirectFBEventBuffer_Construct( buffer, NULL, NULL );
+
+ /* Create the dispatcher. */
+ ret = voodoo_construct_dispatcher( data->manager, "IDirectFBEventBuffer", buffer,
+ data->instance, NULL, &instance, &ptr );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ dispatcher = ptr;
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_CreateEventBuffer, VREQ_NONE, NULL,
+ VMBT_ID, instance,
+ VMBT_NONE );
+ if (ret) {
+ dispatcher->Release( dispatcher );
+ return ret;
+ }
+
+ /* Return the dispatcher interface. */
+ *ret_interface = dispatcher;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateInputEventBuffer( IDirectFB *thiz,
+ DFBInputDeviceCapabilities caps,
+ DFBBoolean global,
+ IDirectFBEventBuffer **ret_interface)
+{
+ DFBResult ret;
+ IDirectFBEventBuffer *buffer;
+ IDirectFBEventBuffer *dispatcher;
+ VoodooInstanceID instance;
+ void *ptr;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ /* Create the real interface. */
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBEventBuffer );
+
+ IDirectFBEventBuffer_Construct( buffer, NULL, NULL );
+
+ /* Create the dispatcher. */
+ ret = voodoo_construct_dispatcher( data->manager, "IDirectFBEventBuffer", buffer,
+ data->instance, NULL, &instance, &ptr );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ dispatcher = ptr;
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_CreateInputEventBuffer, VREQ_NONE, NULL,
+ VMBT_ID, instance,
+ VMBT_INT, caps,
+ VMBT_INT, global,
+ VMBT_NONE );
+ if (ret) {
+ dispatcher->Release( dispatcher );
+ return ret;
+ }
+
+ /* Return the dispatcher interface. */
+ *ret_interface = dispatcher;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateImageProvider( IDirectFB *thiz,
+ const char *filename,
+ IDirectFBImageProvider **ret_interface )
+{
+ DFBResult ret;
+ DFBDataBufferDescription desc;
+ IDirectFBDataBuffer *buffer;
+ IDirectFBImageProvider *provider;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ /* Check arguments */
+ if (!filename || !ret_interface)
+ return DFB_INVARG;
+
+ /* Create a data buffer. */
+ desc.flags = DBDESC_FILE;
+ desc.file = filename;
+
+ ret = thiz->CreateDataBuffer( thiz, &desc, &buffer );
+ if (ret)
+ return ret;
+
+ /* Create (probing) the image provider. */
+ ret = buffer->CreateImageProvider( buffer, &provider );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ /* We don't need it anymore, image provider has its own reference. */
+ buffer->Release( buffer );
+
+ /* Return the new provider. */
+ *ret_interface = provider;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateVideoProvider( IDirectFB *thiz,
+ const char *filename,
+ IDirectFBVideoProvider **interface_ptr )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ /* Check arguments */
+ if (!interface_ptr || !filename)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateFont( IDirectFB *thiz,
+ const char *filename,
+ const DFBFontDescription *desc,
+ IDirectFBFont **ret_interface )
+{
+ DFBResult ret;
+ DFBDataBufferDescription bdesc;
+ IDirectFBDataBuffer *buffer;
+ IDirectFBFont *font;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ /* Check arguments */
+ if (!filename || !ret_interface)
+ return DFB_INVARG;
+
+ /* Create a data buffer. */
+ bdesc.flags = DBDESC_FILE;
+ bdesc.file = filename;
+
+ ret = thiz->CreateDataBuffer( thiz, &bdesc, &buffer );
+ if (ret)
+ return ret;
+
+ /* Create (probing) the font. */
+ ret = buffer->CreateFont( buffer, desc, &font );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ /* We don't need it anymore, font has its own reference. */
+ buffer->Release( buffer );
+
+ /* Return the new font. */
+ *ret_interface = font;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_CreateDataBuffer( IDirectFB *thiz,
+ const DFBDataBufferDescription *desc,
+ IDirectFBDataBuffer **ret_interface )
+{
+ DFBResult ret;
+ IDirectFBDataBuffer *buffer;
+ IDirectFBDataBuffer *dispatcher;
+ VoodooInstanceID instance;
+ void *ptr;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ /* Create the real interface. */
+ if (!desc) {
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBDataBuffer );
+
+ ret = IDirectFBDataBuffer_Streamed_Construct( buffer, NULL );
+ }
+ else if (desc->flags & DBDESC_FILE) {
+ if (!desc->file)
+ return DFB_INVARG;
+
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBDataBuffer );
+
+ ret = IDirectFBDataBuffer_File_Construct( buffer, desc->file, NULL );
+ }
+ else if (desc->flags & DBDESC_MEMORY) {
+ if (!desc->memory.data || !desc->memory.length)
+ return DFB_INVARG;
+
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBDataBuffer );
+
+ ret = IDirectFBDataBuffer_Memory_Construct( buffer,
+ desc->memory.data,
+ desc->memory.length,
+ NULL );
+ }
+ else
+ return DFB_INVARG;
+
+ if (ret)
+ return ret;
+
+ /* Create the dispatcher. */
+ ret = voodoo_construct_dispatcher( data->manager, "IDirectFBDataBuffer",
+ buffer, data->instance, thiz, &instance, &ptr );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ dispatcher = ptr;
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_CreateDataBuffer, VREQ_NONE, NULL,
+ VMBT_ID, instance,
+ VMBT_NONE );
+ if (ret) {
+ dispatcher->Release( dispatcher );
+ return ret;
+ }
+
+ /* Return the dispatcher(!) interface. */
+ *ret_interface = dispatcher;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFB_Requestor_SetClipboardData( IDirectFB *thiz,
+ const char *mime_type,
+ const void *data,
+ unsigned int size,
+ struct timeval *timestamp )
+{
+ if (!mime_type || !data || !size)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetClipboardData( IDirectFB *thiz,
+ char **mime_type,
+ void **clip_data,
+ unsigned int *size )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!mime_type && !clip_data && !size)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetClipboardTimeStamp( IDirectFB *thiz,
+ struct timeval *timestamp )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!timestamp)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_Suspend( IDirectFB *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_Resume( IDirectFB *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_WaitIdle( IDirectFB *thiz )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_WaitIdle, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFB_Requestor_WaitForSync( IDirectFB *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFB_Requestor_GetInterface( IDirectFB *thiz,
+ const char *type,
+ const char *implementation,
+ void *arg,
+ void **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFB_Requestor)
+
+ if (!type || !ret_interface)
+ return DFB_INVARG;
+
+ if (implementation || arg)
+ return DFB_UNSUPPORTED;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFB_METHOD_ID_GetInterface, VREQ_RESPOND, &response,
+ VMBT_STRING, type,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, type, response->instance, thiz, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+/*
+ * Constructor
+ *
+ * Fills in function pointers and intializes data structure.
+ */
+static DFBResult
+Construct( IDirectFB *thiz, const char *host, int port )
+{
+ DFBResult ret;
+
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFB_Requestor)
+
+ data->ref = 1;
+ data->level = DFSCL_NORMAL;
+
+ ret = voodoo_client_create( host, port, &data->client );
+ if (ret) {
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ data->manager = voodoo_client_manager( data->client );
+
+ ret = voodoo_manager_super( data->manager, "IDirectFB", &data->instance );
+ if (ret) {
+ voodoo_client_destroy( data->client );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ thiz->AddRef = IDirectFB_Requestor_AddRef;
+ thiz->Release = IDirectFB_Requestor_Release;
+ thiz->SetCooperativeLevel = IDirectFB_Requestor_SetCooperativeLevel;
+ thiz->GetDeviceDescription = IDirectFB_Requestor_GetDeviceDescription;
+ thiz->EnumVideoModes = IDirectFB_Requestor_EnumVideoModes;
+ thiz->SetVideoMode = IDirectFB_Requestor_SetVideoMode;
+ thiz->CreateSurface = IDirectFB_Requestor_CreateSurface;
+ thiz->CreatePalette = IDirectFB_Requestor_CreatePalette;
+ thiz->EnumScreens = IDirectFB_Requestor_EnumScreens;
+ thiz->GetScreen = IDirectFB_Requestor_GetScreen;
+ thiz->EnumDisplayLayers = IDirectFB_Requestor_EnumDisplayLayers;
+ thiz->GetDisplayLayer = IDirectFB_Requestor_GetDisplayLayer;
+ thiz->EnumInputDevices = IDirectFB_Requestor_EnumInputDevices;
+ thiz->GetInputDevice = IDirectFB_Requestor_GetInputDevice;
+ thiz->CreateEventBuffer = IDirectFB_Requestor_CreateEventBuffer;
+ thiz->CreateInputEventBuffer = IDirectFB_Requestor_CreateInputEventBuffer;
+ thiz->CreateImageProvider = IDirectFB_Requestor_CreateImageProvider;
+ thiz->CreateVideoProvider = IDirectFB_Requestor_CreateVideoProvider;
+ thiz->CreateFont = IDirectFB_Requestor_CreateFont;
+ thiz->CreateDataBuffer = IDirectFB_Requestor_CreateDataBuffer;
+ thiz->SetClipboardData = IDirectFB_Requestor_SetClipboardData;
+ thiz->GetClipboardData = IDirectFB_Requestor_GetClipboardData;
+ thiz->GetClipboardTimeStamp = IDirectFB_Requestor_GetClipboardTimeStamp;
+ thiz->Suspend = IDirectFB_Requestor_Suspend;
+ thiz->Resume = IDirectFB_Requestor_Resume;
+ thiz->WaitIdle = IDirectFB_Requestor_WaitIdle;
+ thiz->WaitForSync = IDirectFB_Requestor_WaitForSync;
+ thiz->GetInterface = IDirectFB_Requestor_GetInterface;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbdatabuffer_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbdatabuffer_requestor.c
new file mode 100755
index 0000000..eebe877
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbdatabuffer_requestor.c
@@ -0,0 +1,484 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string.h>
+
+#include <directfb.h>
+
+#include <direct/debug.h>
+#include <direct/interface.h>
+
+#include <voodoo/manager.h>
+#include <voodoo/message.h>
+
+#include <media/idirectfbdatabuffer.h>
+
+#include <idirectfb.h>
+
+#include <idirectfbdatabuffer_dispatcher.h>
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBDataBuffer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBDataBuffer, Requestor )
+
+/**************************************************************************************************/
+
+/*
+ * private data struct of IDirectFBDataBuffer_Requestor
+ */
+typedef struct {
+ IDirectFBDataBuffer_data base;
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBDataBuffer_Requestor_data;
+
+/**************************************************************************************************/
+
+static void
+IDirectFBDataBuffer_Requestor_Destruct( IDirectFBDataBuffer *thiz )
+{
+ IDirectFBDataBuffer_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ IDirectFBDataBuffer_Destruct( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBDataBuffer_Requestor_AddRef( IDirectFBDataBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ data->base.ref++;
+
+ return DR_OK;
+}
+
+static DirectResult
+IDirectFBDataBuffer_Requestor_Release( IDirectFBDataBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (--data->base.ref == 0)
+ IDirectFBDataBuffer_Requestor_Destruct( thiz );
+
+ return DR_OK;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_Flush( IDirectFBDataBuffer *thiz )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_Flush, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_Finish( IDirectFBDataBuffer *thiz )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_Finish, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_SeekTo( IDirectFBDataBuffer *thiz,
+ unsigned int offset )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_SeekTo, VREQ_RESPOND, &response,
+ VMBT_UINT, offset,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_GetPosition( IDirectFBDataBuffer *thiz,
+ unsigned int *ret_offset )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int offset;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (!ret_offset)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_GetPosition, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, offset );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_offset = offset;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_GetLength( IDirectFBDataBuffer *thiz,
+ unsigned int *ret_length )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int length;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (!ret_length)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_GetLength, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, length );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_length = length;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_WaitForData( IDirectFBDataBuffer *thiz,
+ unsigned int length )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_WaitForData, VREQ_RESPOND, &response,
+ VMBT_UINT, length,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_WaitForDataWithTimeout( IDirectFBDataBuffer *thiz,
+ unsigned int length,
+ unsigned int seconds,
+ unsigned int milli_seconds )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_WaitForDataWithTimeout, VREQ_RESPOND, &response,
+ VMBT_UINT, length,
+ VMBT_UINT, seconds,
+ VMBT_UINT, milli_seconds,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_GetData( IDirectFBDataBuffer *thiz,
+ unsigned int length,
+ void *dest,
+ unsigned int *ret_read )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int read;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (!length || !dest)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_GetData, VREQ_RESPOND, &response,
+ VMBT_UINT, length,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, read );
+ VOODOO_PARSER_READ_DATA( parser, dest, length );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (ret_read)
+ *ret_read = read;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_PeekData( IDirectFBDataBuffer *thiz,
+ unsigned int length,
+ int offset,
+ void *dest,
+ unsigned int *ret_read )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int read;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (!length || !dest)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_PeekData, VREQ_RESPOND, &response,
+ VMBT_UINT, length,
+ VMBT_INT, offset,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, read );
+ VOODOO_PARSER_READ_DATA( parser, dest, length );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (ret_read)
+ *ret_read = read;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_HasData( IDirectFBDataBuffer *thiz )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_HasData, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDataBuffer_Requestor_PutData( IDirectFBDataBuffer *thiz,
+ const void *source,
+ unsigned int length )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor)
+
+ if (!source || !length)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDATABUFFER_METHOD_ID_PutData, VREQ_RESPOND, &response,
+ VMBT_UINT, length,
+ VMBT_DATA, length, source,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBDataBuffer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DFBResult ret;
+ IDirectFB *idirectfb = arg;
+ IDirectFB_data *idirectfb_data;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( idirectfb, idirectfb_data, IDirectFB );
+
+ DIRECT_ALLOCATE_INTERFACE_DATA( thiz, IDirectFBDataBuffer_Requestor );
+
+ ret = IDirectFBDataBuffer_Construct( thiz, NULL, idirectfb_data->core );
+ if (ret)
+ return ret;
+
+ data->manager = manager;
+ data->instance = instance;
+
+ data->base.filename = "";
+
+ thiz->AddRef = IDirectFBDataBuffer_Requestor_AddRef;
+ thiz->Release = IDirectFBDataBuffer_Requestor_Release;
+ thiz->Flush = IDirectFBDataBuffer_Requestor_Flush;
+ thiz->Finish = IDirectFBDataBuffer_Requestor_Finish;
+ thiz->SeekTo = IDirectFBDataBuffer_Requestor_SeekTo;
+ thiz->GetPosition = IDirectFBDataBuffer_Requestor_GetPosition;
+ thiz->GetLength = IDirectFBDataBuffer_Requestor_GetLength;
+ thiz->WaitForData = IDirectFBDataBuffer_Requestor_WaitForData;
+ thiz->WaitForDataWithTimeout = IDirectFBDataBuffer_Requestor_WaitForDataWithTimeout;
+ thiz->GetData = IDirectFBDataBuffer_Requestor_GetData;
+ thiz->PeekData = IDirectFBDataBuffer_Requestor_PeekData;
+ thiz->HasData = IDirectFBDataBuffer_Requestor_HasData;
+ thiz->PutData = IDirectFBDataBuffer_Requestor_PutData;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.c
new file mode 100755
index 0000000..4867f06
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.c
@@ -0,0 +1,721 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <idirectfbdisplaylayer_dispatcher.h>
+
+#include "idirectfbdisplaylayer_requestor.h"
+#include "idirectfbsurface_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBDisplayLayer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBDisplayLayer, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBDisplayLayer_Requestor_Destruct( IDirectFBDisplayLayer *thiz )
+{
+ IDirectFBDisplayLayer_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBDisplayLayer_Requestor_AddRef( IDirectFBDisplayLayer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBDisplayLayer_Requestor_Release( IDirectFBDisplayLayer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBDisplayLayer_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetID( IDirectFBDisplayLayer *thiz,
+ DFBDisplayLayerID *ret_id )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBDisplayLayerID id;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_id)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetID, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_ID( parser, id );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_id = id;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetDescription( IDirectFBDisplayLayer *thiz,
+ DFBDisplayLayerDescription *desc )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetSurface( IDirectFBDisplayLayer *thiz,
+ IDirectFBSurface **interface_ptr )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetScreen( IDirectFBDisplayLayer *thiz,
+ IDirectFBScreen **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetScreen, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBScreen",
+ response->instance, data->idirectfb, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetCooperativeLevel( IDirectFBDisplayLayer *thiz,
+ DFBDisplayLayerCooperativeLevel level )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_SetCooperativeLevel, VREQ_RESPOND, &response,
+ VMBT_UINT, level,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetOpacity( IDirectFBDisplayLayer *thiz,
+ u8 opacity )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetCurrentOutputField( IDirectFBDisplayLayer *thiz, int *field )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetFieldParity( IDirectFBDisplayLayer *thiz, int field )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetScreenLocation( IDirectFBDisplayLayer *thiz,
+ float x,
+ float y,
+ float width,
+ float height )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetSrcColorKey( IDirectFBDisplayLayer *thiz,
+ u8 r,
+ u8 g,
+ u8 b )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetDstColorKey( IDirectFBDisplayLayer *thiz,
+ u8 r,
+ u8 g,
+ u8 b )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetLevel( IDirectFBDisplayLayer *thiz,
+ int *level )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetLevel( IDirectFBDisplayLayer *thiz,
+ int level )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetConfiguration( IDirectFBDisplayLayer *thiz,
+ DFBDisplayLayerConfig *ret_config )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetConfiguration, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK) {
+ VoodooMessageParser parser;
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, ret_config, sizeof(DFBDisplayLayerConfig) );
+ VOODOO_PARSER_END( parser );
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_TestConfiguration( IDirectFBDisplayLayer *thiz,
+ const DFBDisplayLayerConfig *config,
+ DFBDisplayLayerConfigFlags *ret_failed )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!config)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_TestConfiguration, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(DFBDisplayLayerConfig), config,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ if (ret_failed) {
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, *ret_failed );
+ VOODOO_PARSER_END( parser );
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetConfiguration( IDirectFBDisplayLayer *thiz,
+ const DFBDisplayLayerConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetBackgroundMode( IDirectFBDisplayLayer *thiz,
+ DFBDisplayLayerBackgroundMode background_mode )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_SetBackgroundMode, VREQ_NONE, NULL,
+ VMBT_INT, background_mode,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetBackgroundImage( IDirectFBDisplayLayer *thiz,
+ IDirectFBSurface *surface )
+{
+ IDirectFBSurface_Requestor_data *surface_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!surface)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( surface, surface_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_SetBackgroundImage, VREQ_NONE, NULL,
+ VMBT_ID, surface_data->instance,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetBackgroundColor( IDirectFBDisplayLayer *thiz,
+ u8 r, u8 g, u8 b, u8 a )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_CreateWindow( IDirectFBDisplayLayer *thiz,
+ const DFBWindowDescription *real_desc,
+ IDirectFBWindow **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ DFBWindowDescription desc;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ direct_memcpy( &desc, real_desc, sizeof(DFBWindowDescription) );
+
+ if (!(desc.flags & DWDESC_RESOURCE_ID)) {
+ desc.flags |= DWDESC_RESOURCE_ID;
+ desc.resource_id = 1100;
+ }
+
+ D_INFO( "IDirectFBDisplayLayer_Requestor_CreateWindow: Using resource ID %lu\n", desc.resource_id );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_CreateWindow, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(DFBWindowDescription), &desc,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBWindow",
+ response->instance, data->idirectfb, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetWindow( IDirectFBDisplayLayer *thiz,
+ DFBWindowID id,
+ IDirectFBWindow **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetWindow, VREQ_RESPOND, &response,
+ VMBT_ID, id,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBWindow",
+ response->instance, data->idirectfb, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_EnableCursor( IDirectFBDisplayLayer *thiz, int enable )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetCursorPosition( IDirectFBDisplayLayer *thiz,
+ int *x, int *y )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_WarpCursor( IDirectFBDisplayLayer *thiz, int x, int y )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetCursorAcceleration( IDirectFBDisplayLayer *thiz,
+ int numerator,
+ int denominator,
+ int threshold )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetCursorShape( IDirectFBDisplayLayer *thiz,
+ IDirectFBSurface *shape,
+ int hot_x,
+ int hot_y )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetCursorOpacity( IDirectFBDisplayLayer *thiz,
+ u8 opacity )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetColorAdjustment( IDirectFBDisplayLayer *thiz,
+ DFBColorAdjustment *adj )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_SetColorAdjustment( IDirectFBDisplayLayer *thiz,
+ const DFBColorAdjustment *adj )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_WaitForSync( IDirectFBDisplayLayer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetWindowByResourceID( IDirectFBDisplayLayer *thiz,
+ unsigned long resource_id,
+ IDirectFBWindow **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetWindowByResourceID, VREQ_RESPOND, &response,
+ VMBT_ID, resource_id,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBWindow",
+ response->instance, data->idirectfb, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBDisplayLayer_Requestor_GetRotation( IDirectFBDisplayLayer *thiz,
+ int *ret_rotation )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Requestor)
+
+ if (!ret_rotation)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBDISPLAYLAYER_METHOD_ID_GetRotation, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK) {
+ VoodooMessageParser parser;
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, *ret_rotation );
+ VOODOO_PARSER_END( parser );
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBDisplayLayer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBDisplayLayer_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+ data->idirectfb = arg;
+
+ thiz->AddRef = IDirectFBDisplayLayer_Requestor_AddRef;
+ thiz->Release = IDirectFBDisplayLayer_Requestor_Release;
+ thiz->GetID = IDirectFBDisplayLayer_Requestor_GetID;
+ thiz->GetDescription = IDirectFBDisplayLayer_Requestor_GetDescription;
+ thiz->GetSurface = IDirectFBDisplayLayer_Requestor_GetSurface;
+ thiz->GetScreen = IDirectFBDisplayLayer_Requestor_GetScreen;
+ thiz->SetCooperativeLevel = IDirectFBDisplayLayer_Requestor_SetCooperativeLevel;
+ thiz->SetOpacity = IDirectFBDisplayLayer_Requestor_SetOpacity;
+ thiz->GetCurrentOutputField = IDirectFBDisplayLayer_Requestor_GetCurrentOutputField;
+ thiz->SetScreenLocation = IDirectFBDisplayLayer_Requestor_SetScreenLocation;
+ thiz->SetSrcColorKey = IDirectFBDisplayLayer_Requestor_SetSrcColorKey;
+ thiz->SetDstColorKey = IDirectFBDisplayLayer_Requestor_SetDstColorKey;
+ thiz->GetLevel = IDirectFBDisplayLayer_Requestor_GetLevel;
+ thiz->SetLevel = IDirectFBDisplayLayer_Requestor_SetLevel;
+ thiz->GetConfiguration = IDirectFBDisplayLayer_Requestor_GetConfiguration;
+ thiz->TestConfiguration = IDirectFBDisplayLayer_Requestor_TestConfiguration;
+ thiz->SetConfiguration = IDirectFBDisplayLayer_Requestor_SetConfiguration;
+ thiz->SetBackgroundMode = IDirectFBDisplayLayer_Requestor_SetBackgroundMode;
+ thiz->SetBackgroundColor = IDirectFBDisplayLayer_Requestor_SetBackgroundColor;
+ thiz->SetBackgroundImage = IDirectFBDisplayLayer_Requestor_SetBackgroundImage;
+ thiz->GetColorAdjustment = IDirectFBDisplayLayer_Requestor_GetColorAdjustment;
+ thiz->SetColorAdjustment = IDirectFBDisplayLayer_Requestor_SetColorAdjustment;
+ thiz->CreateWindow = IDirectFBDisplayLayer_Requestor_CreateWindow;
+ thiz->GetWindow = IDirectFBDisplayLayer_Requestor_GetWindow;
+ thiz->WarpCursor = IDirectFBDisplayLayer_Requestor_WarpCursor;
+ thiz->SetCursorAcceleration = IDirectFBDisplayLayer_Requestor_SetCursorAcceleration;
+ thiz->EnableCursor = IDirectFBDisplayLayer_Requestor_EnableCursor;
+ thiz->GetCursorPosition = IDirectFBDisplayLayer_Requestor_GetCursorPosition;
+ thiz->SetCursorShape = IDirectFBDisplayLayer_Requestor_SetCursorShape;
+ thiz->SetCursorOpacity = IDirectFBDisplayLayer_Requestor_SetCursorOpacity;
+ thiz->SetFieldParity = IDirectFBDisplayLayer_Requestor_SetFieldParity;
+ thiz->WaitForSync = IDirectFBDisplayLayer_Requestor_WaitForSync;
+ thiz->GetWindowByResourceID = IDirectFBDisplayLayer_Requestor_GetWindowByResourceID;
+ thiz->GetRotation = IDirectFBDisplayLayer_Requestor_GetRotation;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.h
new file mode 100755
index 0000000..c0fa8f7
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.h
@@ -0,0 +1,47 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBDISPLAYLAYER_REQUESTOR_H__
+#define __IDIRECTFBDISPLAYLAYER_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBDisplayLayer_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ IDirectFB *idirectfb;
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBDisplayLayer_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.c
new file mode 100755
index 0000000..5d23d42
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.c
@@ -0,0 +1,300 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string.h>
+#include <errno.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/messages.h>
+#include <direct/thread.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/manager.h>
+
+#include <idirectfbeventbuffer_dispatcher.h>
+
+#include "idirectfbeventbuffer_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBEventBuffer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBEventBuffer, Requestor )
+
+
+/**************************************************************************************************/
+
+static void *feed_thread( DirectThread *thread, void *arg );
+
+/**************************************************************************************************/
+
+static void
+IDirectFBEventBuffer_Requestor_Destruct( IDirectFBEventBuffer *thiz )
+{
+ IDirectFBEventBuffer_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ data->stop = true;
+
+ data->src->WakeUp( data->src );
+
+ direct_thread_join( data->thread );
+ direct_thread_destroy( data->thread );
+
+ data->src->Release( data->src );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBEVENTBUFFER_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBEventBuffer_Requestor_AddRef( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBEventBuffer_Requestor_Release( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBEventBuffer_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_Reset( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_WaitForEvent( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_WaitForEventWithTimeout( IDirectFBEventBuffer *thiz,
+ unsigned int seconds,
+ unsigned int milli_seconds )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_WakeUp( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_GetEvent( IDirectFBEventBuffer *thiz,
+ DFBEvent *event )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_PeekEvent( IDirectFBEventBuffer *thiz,
+ DFBEvent *event )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_HasEvent( IDirectFBEventBuffer *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_PostEvent( IDirectFBEventBuffer *thiz,
+ const DFBEvent *event )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ if (!event)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBEVENTBUFFER_METHOD_ID_PostEvent, VREQ_NONE, NULL,
+ VMBT_DATA, sizeof(DFBEvent), event,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBEventBuffer_Requestor_CreateFileDescriptor( IDirectFBEventBuffer *thiz,
+ int *fd )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBEventBuffer *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBEventBuffer_Requestor)
+
+ voodoo_manager_register_remote( manager, false, thiz, instance );
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+
+ data->src = arg;
+ data->dst = thiz;
+
+ data->src->AddRef( data->src );
+
+ thiz->AddRef = IDirectFBEventBuffer_Requestor_AddRef;
+ thiz->Release = IDirectFBEventBuffer_Requestor_Release;
+ thiz->Reset = IDirectFBEventBuffer_Requestor_Reset;
+ thiz->WaitForEvent = IDirectFBEventBuffer_Requestor_WaitForEvent;
+ thiz->WaitForEventWithTimeout = IDirectFBEventBuffer_Requestor_WaitForEventWithTimeout;
+ thiz->GetEvent = IDirectFBEventBuffer_Requestor_GetEvent;
+ thiz->PeekEvent = IDirectFBEventBuffer_Requestor_PeekEvent;
+ thiz->HasEvent = IDirectFBEventBuffer_Requestor_HasEvent;
+ thiz->PostEvent = IDirectFBEventBuffer_Requestor_PostEvent;
+ thiz->WakeUp = IDirectFBEventBuffer_Requestor_WakeUp;
+ thiz->CreateFileDescriptor = IDirectFBEventBuffer_Requestor_CreateFileDescriptor;
+
+ data->thread = direct_thread_create( DTT_INPUT, feed_thread, data, "Event Feed" );
+
+ return DFB_OK;
+}
+
+/**************************************************************************************************/
+
+static void *
+feed_thread( DirectThread *thread, void *arg )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer_Requestor_data *data = arg;
+ IDirectFBEventBuffer *src = data->src;
+ IDirectFBEventBuffer *dst = data->dst;
+
+ while (!data->stop) {
+ DFBEvent event;
+
+ ret = src->WaitForEvent( src );
+ if (ret) {
+ if (ret == DFB_INTERRUPTED)
+ continue;
+
+ DirectFBError( "IDirectFBEventBuffer::WaitForEvent", ret );
+ return NULL;
+ }
+
+ if (data->stop)
+ return NULL;
+
+ while (src->GetEvent( src, &event ) == DFB_OK) {
+ ret = dst->PostEvent( dst, &event );
+ if (ret) {
+ DirectFBError( "IDirectFBEventBuffer::PostEvent", ret );
+ return NULL;
+ }
+
+ if (data->stop)
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.h
new file mode 100755
index 0000000..001732a
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.h
@@ -0,0 +1,54 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBEVENTBUFFER_REQUESTOR_H__
+#define __IDIRECTFBEVENTBUFFER_REQUESTOR_H__
+
+#include <direct/types.h>
+#include <voodoo/types.h>
+
+#include <directfb.h>
+
+/*
+ * private data struct of IDirectFBEventBuffer_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+
+ IDirectFBEventBuffer *src;
+ IDirectFBEventBuffer *dst;
+
+ bool stop;
+ DirectThread *thread;
+} IDirectFBEventBuffer_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.c
new file mode 100755
index 0000000..392901d
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.c
@@ -0,0 +1,530 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <idirectfbfont_dispatcher.h>
+
+#include "idirectfbfont_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBFont *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBFont, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBFont_Requestor_Destruct( IDirectFBFont *thiz )
+{
+ IDirectFBFont_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ data->buffer->Release( data->buffer );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBFont_Requestor_AddRef( IDirectFBFont *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBFont_Requestor_Release( IDirectFBFont *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBFont_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetAscender( IDirectFBFont *thiz, int *ret_ascender )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int ascender;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!ret_ascender)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetAscender, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, ascender );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_ascender = ascender;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetDescender( IDirectFBFont *thiz, int *ret_descender )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int descender;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!ret_descender)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetDescender, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, descender );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_descender = descender;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetHeight( IDirectFBFont *thiz,
+ int *ret_height )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int height;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!ret_height)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetHeight, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, height );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_height = height;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetMaxAdvance( IDirectFBFont *thiz, int *ret_maxadvance )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int maxadvance;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!ret_maxadvance)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetMaxAdvance, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, maxadvance );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_maxadvance = maxadvance;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetKerning( IDirectFBFont *thiz,
+ unsigned int prev_index, unsigned int current_index,
+ int *ret_kern_x, int *ret_kern_y)
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int kern_x;
+ int kern_y;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!ret_kern_x && !ret_kern_y)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetMaxAdvance, VREQ_RESPOND, &response,
+ VMBT_UINT, prev_index,
+ VMBT_UINT, current_index,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, kern_x );
+ VOODOO_PARSER_GET_INT( parser, kern_y );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_kern_x = kern_x;
+ *ret_kern_y = kern_y;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetStringExtents( IDirectFBFont *thiz,
+ const char *text, int bytes,
+ DFBRectangle *logical_rect,
+ DFBRectangle *ink_rect )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBRectangle *logical;
+ const DFBRectangle *ink;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!text || (!logical_rect && !ink_rect))
+ return DFB_INVARG;
+
+
+ if (bytes < 0)
+ bytes = strlen (text);
+
+ if (bytes == 0) {
+ if (logical_rect)
+ memset( logical_rect, 0, sizeof(DFBRectangle) );
+
+ if (ink_rect)
+ memset( ink_rect, 0, sizeof(DFBRectangle) );
+
+ return DFB_OK;
+ }
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetStringExtents, VREQ_RESPOND, &response,
+ VMBT_DATA, bytes, text,
+ VMBT_INT, bytes,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, logical );
+ VOODOO_PARSER_GET_DATA( parser, ink );
+ VOODOO_PARSER_END( parser );
+
+ if (logical_rect)
+ *logical_rect = *logical;
+
+ if (ink_rect)
+ *ink_rect = *ink;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetStringWidth( IDirectFBFont *thiz,
+ const char *text,
+ int bytes,
+ int *ret_width )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int width;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!text || !ret_width)
+ return DFB_INVARG;
+
+
+ if (bytes < 0)
+ bytes = strlen (text);
+
+ if (bytes == 0)
+ return DFB_OK;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetStringWidth, VREQ_RESPOND, &response,
+ VMBT_DATA, bytes, text,
+ VMBT_INT, bytes,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, width );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_width = width;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetGlyphExtents( IDirectFBFont *thiz,
+ unsigned int index,
+ DFBRectangle *rect,
+ int *ret_advance )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBRectangle *extents;
+ int advance;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ if (!rect && !ret_advance)
+ return DFB_INVARG;
+
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFONT_METHOD_ID_GetGlyphExtents, VREQ_RESPOND, &response,
+ VMBT_UINT, index,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, extents );
+ VOODOO_PARSER_GET_INT( parser, advance );
+ VOODOO_PARSER_END( parser );
+
+ if (rect)
+ *rect = *extents;
+
+ if (advance)
+ *ret_advance = advance;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_GetStringBreak( IDirectFBFont *thiz,
+ const char *text,
+ int bytes,
+ int max_width,
+ int *ret_width,
+ int *ret_str_length,
+ const char **ret_next_line )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_SetEncoding( IDirectFBFont *thiz,
+ DFBTextEncodingID encoding )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_EnumEncodings( IDirectFBFont *thiz,
+ DFBTextEncodingCallback callback,
+ void *ctx )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBFont_Requestor_FindEncoding( IDirectFBFont *thiz,
+ const char *name,
+ DFBTextEncodingID *encoding )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor)
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBFont *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ IDirectFBDataBuffer *buffer = arg;
+
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBFont_Requestor)
+
+ buffer->AddRef( buffer );
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+ data->buffer = buffer;
+
+ thiz->AddRef = IDirectFBFont_Requestor_AddRef;
+ thiz->Release = IDirectFBFont_Requestor_Release;
+ thiz->GetAscender = IDirectFBFont_Requestor_GetAscender;
+ thiz->GetDescender = IDirectFBFont_Requestor_GetDescender;
+ thiz->GetHeight = IDirectFBFont_Requestor_GetHeight;
+ thiz->GetMaxAdvance = IDirectFBFont_Requestor_GetMaxAdvance;
+ thiz->GetKerning = IDirectFBFont_Requestor_GetKerning;
+ thiz->GetStringWidth = IDirectFBFont_Requestor_GetStringWidth;
+ thiz->GetStringExtents = IDirectFBFont_Requestor_GetStringExtents;
+ thiz->GetGlyphExtents = IDirectFBFont_Requestor_GetGlyphExtents;
+ thiz->GetStringBreak = IDirectFBFont_Requestor_GetStringBreak;
+ thiz->SetEncoding = IDirectFBFont_Requestor_SetEncoding;
+ thiz->EnumEncodings = IDirectFBFont_Requestor_EnumEncodings;
+ thiz->FindEncoding = IDirectFBFont_Requestor_FindEncoding;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.h
new file mode 100755
index 0000000..5c2b203
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbfont_requestor.h
@@ -0,0 +1,47 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBFONT_REQUESTOR_H__
+#define __IDIRECTFBFONT_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBFont_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+
+ IDirectFBDataBuffer *buffer;
+} IDirectFBFont_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.c
new file mode 100755
index 0000000..9574354
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.c
@@ -0,0 +1,135 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <idirectfbfoo_dispatcher.h>
+
+#include "idirectfbfoo_requestor.h"
+
+
+static DFBResult Probe();
+static DFBResult Construct( IDirectFBFoo *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBFoo, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBFoo_Requestor_Destruct( IDirectFBFoo *thiz )
+{
+ IDirectFBFoo_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBFOO_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+IDirectFBFoo_Requestor_AddRef( IDirectFBFoo *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFoo_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFoo_Requestor_Release( IDirectFBFoo *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFoo_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBFoo_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBFoo_Requestor_Bar( IDirectFBFoo *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBFoo_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBFoo *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBFoo_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+
+ thiz->AddRef = IDirectFBFoo_Requestor_AddRef;
+ thiz->Release = IDirectFBFoo_Requestor_Release;
+ thiz->Bar = IDirectFBFoo_Requestor_Bar;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.h
new file mode 100755
index 0000000..1b125bb
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.h
@@ -0,0 +1,45 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBFOO_REQUESTOR_H__
+#define __IDIRECTFBFOO_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBFoo_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBFoo_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbimageprovider_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbimageprovider_requestor.c
new file mode 100755
index 0000000..b0ce08e
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbimageprovider_requestor.c
@@ -0,0 +1,264 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <idirectfb_dispatcher.h>
+#include <idirectfbimageprovider_dispatcher.h>
+
+#include "idirectfbsurface_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBImageProvider *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBImageProvider, Requestor )
+
+
+/**************************************************************************************************/
+
+/*
+ * private data struct of IDirectFBImageProvider_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+
+ IDirectFBDataBuffer *buffer;
+} IDirectFBImageProvider_Requestor_data;
+
+/**************************************************************************************************/
+
+static void
+IDirectFBImageProvider_Requestor_Destruct( IDirectFBImageProvider *thiz )
+{
+ IDirectFBImageProvider_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ data->buffer->Release( data->buffer );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBIMAGEPROVIDER_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBImageProvider_Requestor_AddRef( IDirectFBImageProvider *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBImageProvider_Requestor_Release( IDirectFBImageProvider *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBImageProvider_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBImageProvider_Requestor_GetSurfaceDescription( IDirectFBImageProvider *thiz,
+ DFBSurfaceDescription *desc )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ if (!desc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBIMAGEPROVIDER_METHOD_ID_GetSurfaceDescription,
+ VREQ_RESPOND | VREQ_ASYNC, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DFBSurfaceDescription( parser, *desc );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBImageProvider_Requestor_GetImageDescription( IDirectFBImageProvider *thiz,
+ DFBImageDescription *desc )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ if (!desc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBIMAGEPROVIDER_METHOD_ID_GetImageDescription,
+ VREQ_RESPOND | VREQ_ASYNC, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, desc, sizeof(DFBImageDescription) );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBImageProvider_Requestor_RenderTo( IDirectFBImageProvider *thiz,
+ IDirectFBSurface *destination,
+ const DFBRectangle *destination_rect )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ IDirectFBSurface_Requestor_data *destination_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ if (!destination)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( destination, destination_data, IDirectFBSurface_Requestor);
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBIMAGEPROVIDER_METHOD_ID_RenderTo,
+ VREQ_RESPOND | VREQ_ASYNC, &response,
+ VMBT_ID, destination_data->instance,
+ VMBT_ODATA, sizeof(DFBRectangle), destination_rect,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBImageProvider_Requestor_SetRenderCallback( IDirectFBImageProvider *thiz,
+ DIRenderCallback callback,
+ void *callback_data )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBImageProvider_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBImageProvider *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ IDirectFBDataBuffer *buffer = arg;
+
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBImageProvider_Requestor)
+
+ buffer->AddRef( buffer );
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+ data->buffer = buffer;
+
+ thiz->AddRef = IDirectFBImageProvider_Requestor_AddRef;
+ thiz->Release = IDirectFBImageProvider_Requestor_Release;
+ thiz->GetSurfaceDescription = IDirectFBImageProvider_Requestor_GetSurfaceDescription;
+ thiz->GetImageDescription = IDirectFBImageProvider_Requestor_GetImageDescription;
+ thiz->RenderTo = IDirectFBImageProvider_Requestor_RenderTo;
+ thiz->SetRenderCallback = IDirectFBImageProvider_Requestor_SetRenderCallback;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.c
new file mode 100755
index 0000000..3193467
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.c
@@ -0,0 +1,469 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <input/idirectfbinputbuffer.h>
+
+#include <idirectfbeventbuffer_dispatcher.h>
+#include <idirectfbinputdevice_dispatcher.h>
+
+#include "idirectfbinputdevice_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBInputDevice *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBInputDevice, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBInputDevice_Requestor_Destruct( IDirectFBInputDevice *thiz )
+{
+ IDirectFBInputDevice_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBInputDevice_Requestor_AddRef( IDirectFBInputDevice *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBInputDevice_Requestor_Release( IDirectFBInputDevice *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBInputDevice_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetID( IDirectFBInputDevice *thiz,
+ DFBInputDeviceID *ret_id )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBInputDeviceID id;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_id)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_GetID, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_ID( parser, id );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_id = id;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_CreateEventBuffer( IDirectFBInputDevice *thiz,
+ IDirectFBEventBuffer **ret_interface )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer *buffer;
+ IDirectFBEventBuffer *dispatcher;
+ VoodooInstanceID instance;
+ VoodooResponseMessage *response;
+ void *ptr;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ /* Create the real interface. */
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBEventBuffer );
+
+ IDirectFBEventBuffer_Construct( buffer, NULL, NULL );
+
+ /* Create the dispatcher. */
+ ret = voodoo_construct_dispatcher( data->manager, "IDirectFBEventBuffer",
+ buffer, data->instance, NULL, &instance, &ptr );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ dispatcher = ptr;
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_CreateEventBuffer,
+ VREQ_RESPOND, &response,
+ VMBT_ID, instance,
+ VMBT_NONE );
+ if (ret) {
+ dispatcher->Release( dispatcher );
+ return ret;
+ }
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ /* Return the dispatcher interface. */
+ *ret_interface = dispatcher;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_AttachEventBuffer( IDirectFBInputDevice *thiz,
+ IDirectFBEventBuffer *buffer )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer_Dispatcher_data *buffer_data;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!buffer)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( buffer, buffer_data, IDirectFBEventBuffer_Dispatcher );
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_AttachEventBuffer,
+ VREQ_RESPOND, &response,
+ VMBT_ID, buffer_data->self,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_DetachEventBuffer( IDirectFBInputDevice *thiz,
+ IDirectFBEventBuffer *buffer )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer_Dispatcher_data *buffer_data;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!buffer)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( buffer, buffer_data, IDirectFBEventBuffer_Dispatcher );
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_DetachEventBuffer,
+ VREQ_RESPOND, &response,
+ VMBT_ID, buffer_data->self,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetDescription( IDirectFBInputDevice *thiz,
+ DFBInputDeviceDescription *ret_desc )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_desc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_GetDescription,
+ VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, ret_desc, sizeof(DFBInputDeviceDescription) );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetKeymapEntry( IDirectFBInputDevice *thiz,
+ int keycode,
+ DFBInputDeviceKeymapEntry *ret_entry )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_entry)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBINPUTDEVICE_METHOD_ID_GetKeymapEntry,
+ VREQ_RESPOND, &response,
+ VMBT_INT, keycode,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, ret_entry, sizeof(DFBInputDeviceKeymapEntry) );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetKeyState( IDirectFBInputDevice *thiz,
+ DFBInputDeviceKeyIdentifier key_id,
+ DFBInputDeviceKeyState *ret_state )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_state)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetModifiers( IDirectFBInputDevice *thiz,
+ DFBInputDeviceModifierMask *ret_modifiers )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_modifiers)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetLockState( IDirectFBInputDevice *thiz,
+ DFBInputDeviceLockState *ret_locks )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_locks)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetButtons( IDirectFBInputDevice *thiz,
+ DFBInputDeviceButtonMask *ret_buttons )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_buttons)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetButtonState( IDirectFBInputDevice *thiz,
+ DFBInputDeviceButtonIdentifier button,
+ DFBInputDeviceButtonState *ret_state )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_state || (int)button < DIBI_FIRST || button > DIBI_LAST)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetAxis( IDirectFBInputDevice *thiz,
+ DFBInputDeviceAxisIdentifier axis,
+ int *ret_pos )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_pos || (int)axis < DIAI_FIRST || axis > DIAI_LAST)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBInputDevice_Requestor_GetXY( IDirectFBInputDevice *thiz,
+ int *ret_x,
+ int *ret_y )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Requestor)
+
+ if (!ret_x && !ret_y)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBInputDevice *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBInputDevice_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+
+ thiz->AddRef = IDirectFBInputDevice_Requestor_AddRef;
+ thiz->Release = IDirectFBInputDevice_Requestor_Release;
+ thiz->GetID = IDirectFBInputDevice_Requestor_GetID;
+ thiz->GetDescription = IDirectFBInputDevice_Requestor_GetDescription;
+ thiz->GetKeymapEntry = IDirectFBInputDevice_Requestor_GetKeymapEntry;
+ thiz->CreateEventBuffer = IDirectFBInputDevice_Requestor_CreateEventBuffer;
+ thiz->AttachEventBuffer = IDirectFBInputDevice_Requestor_AttachEventBuffer;
+ thiz->DetachEventBuffer = IDirectFBInputDevice_Requestor_DetachEventBuffer;
+ thiz->GetKeyState = IDirectFBInputDevice_Requestor_GetKeyState;
+ thiz->GetModifiers = IDirectFBInputDevice_Requestor_GetModifiers;
+ thiz->GetLockState = IDirectFBInputDevice_Requestor_GetLockState;
+ thiz->GetButtons = IDirectFBInputDevice_Requestor_GetButtons;
+ thiz->GetButtonState = IDirectFBInputDevice_Requestor_GetButtonState;
+ thiz->GetAxis = IDirectFBInputDevice_Requestor_GetAxis;
+ thiz->GetXY = IDirectFBInputDevice_Requestor_GetXY;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.h
new file mode 100755
index 0000000..20eb4b6
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.h
@@ -0,0 +1,45 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBINPUTDEVICE_REQUESTOR_H__
+#define __IDIRECTFBINPUTDEVICE_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBInputDevice_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBInputDevice_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.c
new file mode 100755
index 0000000..858460c
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.c
@@ -0,0 +1,335 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <idirectfbpalette_dispatcher.h>
+
+#include "idirectfbpalette_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBPalette *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBPalette, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBPalette_Requestor_Destruct( IDirectFBPalette *thiz )
+{
+ IDirectFBPalette_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBPalette_Requestor_AddRef( IDirectFBPalette *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBPalette_Requestor_Release( IDirectFBPalette *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBPalette_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_GetCapabilities( IDirectFBPalette *thiz,
+ DFBPaletteCapabilities *ret_caps )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBPaletteCapabilities caps;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!ret_caps)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_GetCapabilities, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, caps );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_caps = caps;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_GetSize( IDirectFBPalette *thiz,
+ unsigned int *ret_size )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int size;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!ret_size)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_GetSize, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, size );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_size = size;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_SetEntries( IDirectFBPalette *thiz,
+ const DFBColor *entries,
+ unsigned int num_entries,
+ unsigned int offset )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!entries)
+ return DFB_INVARG;
+
+ if (!num_entries)
+ return DFB_OK;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_SetEntries, VREQ_RESPOND, &response,
+ VMBT_DATA, num_entries * sizeof(DFBColor), entries,
+ VMBT_UINT, num_entries,
+ VMBT_UINT, offset,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_GetEntries( IDirectFBPalette *thiz,
+ DFBColor *entries,
+ unsigned int num_entries,
+ unsigned int offset )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!entries)
+ return DFB_INVARG;
+
+ if (!num_entries)
+ return DFB_OK;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_GetEntries, VREQ_RESPOND, &response,
+ VMBT_UINT, num_entries,
+ VMBT_UINT, offset,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, entries, num_entries * sizeof(DFBColor) );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_FindBestMatch( IDirectFBPalette *thiz,
+ u8 r,
+ u8 g,
+ u8 b,
+ u8 a,
+ unsigned int *ret_index )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ unsigned int index;
+ DFBColor color = { a, r, g, b };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!ret_index)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBPALETTE_METHOD_ID_FindBestMatch, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(color), &color,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, index );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_index = index;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBPalette_Requestor_CreateCopy( IDirectFBPalette *thiz,
+ IDirectFBPalette **ret_interface )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBPalette *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBPalette_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+
+ thiz->AddRef = IDirectFBPalette_Requestor_AddRef;
+ thiz->Release = IDirectFBPalette_Requestor_Release;
+ thiz->GetCapabilities = IDirectFBPalette_Requestor_GetCapabilities;
+ thiz->GetSize = IDirectFBPalette_Requestor_GetSize;
+ thiz->SetEntries = IDirectFBPalette_Requestor_SetEntries;
+ thiz->GetEntries = IDirectFBPalette_Requestor_GetEntries;
+ thiz->FindBestMatch = IDirectFBPalette_Requestor_FindBestMatch;
+ thiz->CreateCopy = IDirectFBPalette_Requestor_CreateCopy;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.h
new file mode 100755
index 0000000..01c1946
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.h
@@ -0,0 +1,45 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBPALETTE_REQUESTOR_H__
+#define __IDIRECTFBPALETTE_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBPalette_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBPalette_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbscreen_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbscreen_requestor.c
new file mode 100755
index 0000000..d86dbd9
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbscreen_requestor.c
@@ -0,0 +1,524 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string.h>
+
+#include <directfb.h>
+
+#include <direct/debug.h>
+#include <direct/interface.h>
+#include <direct/messages.h>
+
+#include <voodoo/manager.h>
+#include <voodoo/message.h>
+
+#include <idirectfbscreen_dispatcher.h>
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBScreen *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBScreen, Requestor )
+
+/**************************************************************************************************/
+
+/*
+ * private data struct of IDirectFBScreen_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBScreen_Requestor_data;
+
+/**************************************************************************************************/
+
+static void
+IDirectFBScreen_Requestor_Destruct( IDirectFBScreen *thiz )
+{
+ IDirectFBScreen_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBScreen_Requestor_AddRef( IDirectFBScreen *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBScreen_Requestor_Release( IDirectFBScreen *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBScreen_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetID( IDirectFBScreen *thiz,
+ DFBScreenID *ret_id )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBScreenID id;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!ret_id)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_GetID, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_ID( parser, id );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_id = id;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetDescription( IDirectFBScreen *thiz,
+ DFBScreenDescription *ret_desc )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBScreenDescription *desc;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!ret_desc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_GetDescription,
+ VREQ_RESPOND, &response, VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, desc );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_desc = *desc;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetSize( IDirectFBScreen *thiz,
+ int *width,
+ int *height )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBDimension *size;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!width && !height)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_GetSize,
+ VREQ_RESPOND, &response, VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, size );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (width)
+ *width = size->w;
+
+ if (height)
+ *height = size->h;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_EnumDisplayLayers( IDirectFBScreen *thiz,
+ DFBDisplayLayerCallback callbackfunc,
+ void *callbackdata )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ int i, num;
+ IDirectFBScreen_Dispatcher_EnumDisplayLayers_Item *items;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!callbackfunc)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_EnumDisplayLayers, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, num );
+
+ items = D_MALLOC( sizeof(*items) * num );
+ if (items)
+ VOODOO_PARSER_READ_DATA( parser, items, sizeof(*items) * num );
+ else
+ ret = D_OOM();
+
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (items) {
+ for (i=0; i<num; i++) {
+ if (callbackfunc( items[i].layer_id, items[i].desc, callbackdata ) == DFENUM_CANCEL)
+ break;
+ }
+
+ D_FREE( items );
+ }
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_SetPowerMode( IDirectFBScreen *thiz,
+ DFBScreenPowerMode mode )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_SetPowerMode, VREQ_NONE, NULL,
+ VMBT_INT, mode,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_WaitForSync( IDirectFBScreen *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSCREEN_METHOD_ID_WaitForSync, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetMixerDescriptions( IDirectFBScreen *thiz,
+ DFBScreenMixerDescription *descriptions )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!descriptions)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetMixerConfiguration( IDirectFBScreen *thiz,
+ int mixer,
+ DFBScreenMixerConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_TestMixerConfiguration( IDirectFBScreen *thiz,
+ int mixer,
+ const DFBScreenMixerConfig *config,
+ DFBScreenMixerConfigFlags *failed )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSMCONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_SetMixerConfiguration( IDirectFBScreen *thiz,
+ int mixer,
+ const DFBScreenMixerConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSMCONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetEncoderDescriptions( IDirectFBScreen *thiz,
+ DFBScreenEncoderDescription *descriptions )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!descriptions)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetEncoderConfiguration( IDirectFBScreen *thiz,
+ int encoder,
+ DFBScreenEncoderConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_TestEncoderConfiguration( IDirectFBScreen *thiz,
+ int encoder,
+ const DFBScreenEncoderConfig *config,
+ DFBScreenEncoderConfigFlags *failed )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSECONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_SetEncoderConfiguration( IDirectFBScreen *thiz,
+ int encoder,
+ const DFBScreenEncoderConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSECONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetOutputDescriptions( IDirectFBScreen *thiz,
+ DFBScreenOutputDescription *descriptions )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!descriptions)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_GetOutputConfiguration( IDirectFBScreen *thiz,
+ int output,
+ DFBScreenOutputConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_TestOutputConfiguration( IDirectFBScreen *thiz,
+ int output,
+ const DFBScreenOutputConfig *config,
+ DFBScreenOutputConfigFlags *failed )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSOCONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBScreen_Requestor_SetOutputConfiguration( IDirectFBScreen *thiz,
+ int output,
+ const DFBScreenOutputConfig *config )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBScreen_Requestor)
+
+ if (!config || (config->flags & ~DSOCONF_ALL))
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBScreen *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBScreen_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+
+ thiz->AddRef = IDirectFBScreen_Requestor_AddRef;
+ thiz->Release = IDirectFBScreen_Requestor_Release;
+ thiz->GetID = IDirectFBScreen_Requestor_GetID;
+ thiz->GetDescription = IDirectFBScreen_Requestor_GetDescription;
+ thiz->GetSize = IDirectFBScreen_Requestor_GetSize;
+ thiz->EnumDisplayLayers = IDirectFBScreen_Requestor_EnumDisplayLayers;
+ thiz->SetPowerMode = IDirectFBScreen_Requestor_SetPowerMode;
+ thiz->WaitForSync = IDirectFBScreen_Requestor_WaitForSync;
+ thiz->GetMixerDescriptions = IDirectFBScreen_Requestor_GetMixerDescriptions;
+ thiz->GetMixerConfiguration = IDirectFBScreen_Requestor_GetMixerConfiguration;
+ thiz->TestMixerConfiguration = IDirectFBScreen_Requestor_TestMixerConfiguration;
+ thiz->SetMixerConfiguration = IDirectFBScreen_Requestor_SetMixerConfiguration;
+ thiz->GetEncoderDescriptions = IDirectFBScreen_Requestor_GetEncoderDescriptions;
+ thiz->GetEncoderConfiguration = IDirectFBScreen_Requestor_GetEncoderConfiguration;
+ thiz->TestEncoderConfiguration = IDirectFBScreen_Requestor_TestEncoderConfiguration;
+ thiz->SetEncoderConfiguration = IDirectFBScreen_Requestor_SetEncoderConfiguration;
+ thiz->GetOutputDescriptions = IDirectFBScreen_Requestor_GetOutputDescriptions;
+ thiz->GetOutputConfiguration = IDirectFBScreen_Requestor_GetOutputConfiguration;
+ thiz->TestOutputConfiguration = IDirectFBScreen_Requestor_TestOutputConfiguration;
+ thiz->SetOutputConfiguration = IDirectFBScreen_Requestor_SetOutputConfiguration;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.c
new file mode 100755
index 0000000..49984c0
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.c
@@ -0,0 +1,1852 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <math.h>
+
+
+#include <directfb.h>
+#include <directfb_util.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+
+#include <voodoo/conf.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+#include <voodoo/message.h>
+
+#include <misc/conf.h>
+
+#include <idirectfbsurface_dispatcher.h>
+
+#include "idirectfbfont_requestor.h"
+#include "idirectfbpalette_requestor.h"
+#include "idirectfbsurface_requestor.h"
+
+
+D_DEBUG_DOMAIN( IDirectFBSurface_Requestor_, "IDirectFBSurface/Requestor", "IDirectFBSurface Requestor" );
+D_DEBUG_DOMAIN( IDirectFBSurface_RequestorFlip, "IDirectFBSurface/Requestor/Flip", "IDirectFBSurface Requestor Flip" );
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBSurface *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBSurface, Requestor )
+
+/**************************************************************************************************/
+
+static void
+IDirectFBSurface_Requestor_Destruct( IDirectFBSurface *thiz )
+{
+ IDirectFBSurface_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ direct_mutex_deinit( &data->flip.lock );
+ direct_waitqueue_deinit( &data->flip.queue );
+
+ if (data->flip.window)
+ data->flip.window->Release( data->flip.window );
+
+ if (data->flip.buffer)
+ data->flip.buffer->Release( data->flip.buffer );
+
+ if (data->local != VOODOO_INSTANCE_NONE)
+ voodoo_manager_unregister_local( data->manager, data->local );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBSurface_Requestor_AddRef( IDirectFBSurface *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBSurface_Requestor_Release( IDirectFBSurface *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBSurface_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+
+static DFBResult
+IDirectFBSurface_Requestor_GetPixelFormat( IDirectFBSurface *thiz,
+ DFBSurfacePixelFormat *ret_format )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!ret_format)
+ return DFB_INVARG;
+
+ if (!data->format) {
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetPixelFormat, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, data->format );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+ }
+
+ *ret_format = data->format;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetAccelerationMask( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ DFBAccelerationMask *ret_mask )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBAccelerationMask mask;
+
+ IDirectFBSurface_Requestor_data *source_data = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (source)
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetAccelerationMask, VREQ_RESPOND, &response,
+ VMBT_ID, source_data ? source_data->instance : VOODOO_INSTANCE_NONE,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, mask );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_mask = mask;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetPosition( IDirectFBSurface *thiz,
+ int *x,
+ int *y )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBPoint *position;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!x && !y)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetPosition,
+ VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, position );
+ VOODOO_PARSER_END( parser );
+
+ if (x)
+ *x = position->x;
+
+ if (y)
+ *y = position->y;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetSize( IDirectFBSurface *thiz,
+ int *width,
+ int *height )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBDimension *dimension;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!width && !height)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetSize, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, dimension );
+ VOODOO_PARSER_END( parser );
+
+ if (width)
+ *width = dimension->w;
+
+ if (height)
+ *height = dimension->h;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetVisibleRectangle( IDirectFBSurface *thiz,
+ DFBRectangle *rect )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!rect)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetVisibleRectangle,
+ VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_READ_DATA( parser, rect, sizeof(DFBRectangle) );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetCapabilities( IDirectFBSurface *thiz,
+ DFBSurfaceCapabilities *caps )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!caps)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetPalette( IDirectFBSurface *thiz,
+ IDirectFBPalette **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetPalette, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBPalette",
+ response->instance, data->idirectfb, &interface_ptr );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetPalette( IDirectFBSurface *thiz,
+ IDirectFBPalette *palette )
+{
+ IDirectFBPalette_Requestor_data *palette_data = NULL;
+
+ DIRECT_INTERFACE_GET_DATA( IDirectFBSurface_Requestor )
+
+ if (!palette)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( palette, palette_data, IDirectFBPalette_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetPalette, VREQ_QUEUE, NULL,
+ VMBT_ID, palette_data->instance,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetAlphaRamp( IDirectFBSurface *thiz,
+ u8 a0, u8 a1, u8 a2, u8 a3 )
+{
+ DIRECT_INTERFACE_GET_DATA( IDirectFBSurface_Requestor )
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Lock( IDirectFBSurface *thiz,
+ DFBSurfaceLockFlags flags,
+ void **ret_ptr, int *ret_pitch )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!flags || !ret_ptr || !ret_pitch)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetFramebufferOffset( IDirectFBSurface *thiz,
+ int *offset )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!offset)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Unlock( IDirectFBSurface *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DirectResult
+Handle_FlipReturned( IDirectFBSurface *thiz,
+ unsigned int millis )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, "%s( %p, millis %u )\n", __FUNCTION__, thiz, millis );
+
+ long long now = direct_clock_get_micros();
+
+ data->flip.returned = millis;
+
+ data->flip.fps_count++;
+
+
+ long long diff = now - data->flip.fps_stamp;
+ unsigned int frames = data->flip.fps_count - data->flip.fps_old;
+
+ if (diff > 10000000) {
+ long long kfps = frames * 1000000000ULL / diff;
+
+ D_INFO( "IDirectFBSurface_Requestor_FlipNotify: FPS %lld.%03lld\n", kfps / 1000, kfps % 1000 );
+
+ data->flip.fps_stamp = now;
+ data->flip.fps_old = data->flip.fps_count;
+ }
+
+ return DR_OK;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Flip( IDirectFBSurface *thiz,
+ const DFBRegion *region,
+ DFBSurfaceFlipFlags flags )
+{
+ DirectResult ret;
+ unsigned int millis;
+ bool use_notify_or_buffer = false;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, "%s( %p, region %p, flags 0x%08x )\n", __FUNCTION__, thiz, region, flags );
+
+ // FIXME: find better heuristic for flip control, or use flag
+ if (!region || (region->x1 == 0 && region->y1 == 0))
+ use_notify_or_buffer = true;
+
+ millis = direct_clock_get_abs_millis();
+
+ if (flags & DSFLIP_WAIT) {
+ VoodooResponseMessage *response;
+
+ if (data->flip.use_notify)
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Flip, VREQ_RESPOND, &response,
+ VMBT_ODATA, sizeof(DFBRegion), region,
+ VMBT_INT, flags,
+ VMBT_UINT, millis,
+ VMBT_NONE );
+ else
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Flip, VREQ_RESPOND, &response,
+ VMBT_ODATA, sizeof(DFBRegion), region,
+ VMBT_INT, flags,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+ }
+
+ if (data->flip.use_notify) {
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, " -> millis %u, using FlipNotify\n", millis );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Flip, VREQ_NONE, NULL,
+ VMBT_ODATA, sizeof(DFBRegion), region,
+ VMBT_INT, flags,
+ VMBT_UINT, millis,
+ VMBT_NONE );
+ }
+ else {
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, " -> millis %u, not using FlipNotify\n", millis );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Flip, VREQ_NONE, NULL,
+ VMBT_ODATA, sizeof(DFBRegion), region,
+ VMBT_INT, flags,
+ VMBT_NONE );
+ }
+
+ if (use_notify_or_buffer && data->flip.use_notify) {
+ if (data->flip.end && millis - data->flip.end < 16) {
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, " -> delaying next frame by %d ms\n", 16 - (millis - data->flip.end) );
+
+ direct_thread_sleep( (16 - (millis - data->flip.end)) * 1000 );
+ }
+
+ data->flip.requested = millis;
+ data->flip.end = direct_clock_get_abs_millis();;
+
+ direct_mutex_lock( &data->flip.lock );
+
+ while (data->flip.requested - data->flip.returned > dfb_config->flip_notify_max_latency)
+ direct_waitqueue_wait( &data->flip.queue, &data->flip.lock );
+
+ direct_mutex_unlock( &data->flip.lock );
+ }
+ else if (use_notify_or_buffer && data->flip.use_buffer) {
+ ret = data->flip.window->MoveTo( data->flip.window, 1 + (millis & 0xffff), 1 + (millis >> 16) );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor_Flip: MoveTo() for FlipNotify fallback failed!\n" );
+ data->flip.use_buffer = false;
+ return DFB_OK;
+ }
+
+ if (data->flip.end && millis - data->flip.end < 16) {
+ D_DEBUG_AT( IDirectFBSurface_RequestorFlip, " -> delaying next frame by %d ms\n", 16 - (millis - data->flip.end) );
+
+ direct_thread_sleep( (16 - (millis - data->flip.end)) * 1000 );
+ }
+
+ data->flip.requested = millis;
+ data->flip.end = direct_clock_get_abs_millis();;
+
+
+ DFBEvent event;
+
+ while (data->flip.buffer->GetEvent( data->flip.buffer, &event ) == DFB_OK) {
+ if (event.clazz == DFEC_WINDOW && event.window.type == DWET_POSITION)
+ Handle_FlipReturned( thiz, ((u32)event.window.x - 1) | (((u32)event.window.y - 1) << 16) );
+ }
+
+ while (data->flip.requested - data->flip.returned > dfb_config->flip_notify_max_latency) {
+ data->flip.buffer->WaitForEvent( data->flip.buffer );
+
+ while (data->flip.buffer->GetEvent( data->flip.buffer, &event ) == DFB_OK) {
+ if (event.clazz == DFEC_WINDOW && event.window.type == DWET_POSITION)
+ Handle_FlipReturned( thiz, ((u32)event.window.x - 1) | (((u32)event.window.y - 1) << 16) );
+ }
+ }
+ }
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetField( IDirectFBSurface *thiz,
+ int field )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (field < 0 || field > 1)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Clear( IDirectFBSurface *thiz,
+ u8 r, u8 g, u8 b, u8 a )
+{
+ DFBColor color = { a, r, g, b };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Clear, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBColor), &color,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetClip( IDirectFBSurface *thiz, const DFBRegion *clip )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetClip, VREQ_QUEUE, NULL,
+ VMBT_ODATA, sizeof(DFBRegion), clip,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetColor( IDirectFBSurface *thiz,
+ u8 r, u8 g, u8 b, u8 a )
+{
+ DFBColor color = { a, r, g, b };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetColor, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBColor), &color,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetColorIndex( IDirectFBSurface *thiz,
+ unsigned int index )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetSrcBlendFunction( IDirectFBSurface *thiz,
+ DFBSurfaceBlendFunction src )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetDstBlendFunction( IDirectFBSurface *thiz,
+ DFBSurfaceBlendFunction dst )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetPorterDuff( IDirectFBSurface *thiz,
+ DFBSurfacePorterDuffRule rule )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetSrcColorKey( IDirectFBSurface *thiz,
+ u8 r,
+ u8 g,
+ u8 b )
+{
+ DFBColor color = { 0, r, g, b };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetSrcColorKey, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBColor), &color,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetSrcColorKeyIndex( IDirectFBSurface *thiz,
+ unsigned int index )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetSrcColorKeyIndex, VREQ_QUEUE, NULL,
+ VMBT_UINT, index,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetDstColorKey( IDirectFBSurface *thiz,
+ u8 r,
+ u8 g,
+ u8 b )
+{
+ DFBColor color = { 0, r, g, b };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetDstColorKey, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBColor), &color,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetDstColorKeyIndex( IDirectFBSurface *thiz,
+ unsigned int index )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetDstColorKeyIndex, VREQ_QUEUE, NULL,
+ VMBT_UINT, index,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetFont( IDirectFBSurface *thiz,
+ IDirectFBFont *font )
+{
+ IDirectFBFont_Requestor_data *font_data = NULL;
+
+ DIRECT_INTERFACE_GET_DATA( IDirectFBSurface_Requestor )
+
+ if (data->font == font)
+ return DFB_OK;
+
+ if (font) {
+ font->AddRef (font);
+
+ DIRECT_INTERFACE_GET_DATA_FROM( font, font_data, IDirectFBFont_Requestor );
+ }
+
+ if (data->font)
+ data->font->Release (data->font);
+
+ data->font = font;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetFont, VREQ_QUEUE, NULL,
+ VMBT_ID, font_data ? font_data->instance : VOODOO_INSTANCE_NONE,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetFont( IDirectFBSurface *thiz,
+ IDirectFBFont **font )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetDrawingFlags( IDirectFBSurface *thiz,
+ DFBSurfaceDrawingFlags flags )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetDrawingFlags, VREQ_QUEUE, NULL,
+ VMBT_INT, flags,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_FillRectangle( IDirectFBSurface *thiz,
+ int x, int y, int w, int h )
+{
+ DFBRectangle rect = { x, y, w, h };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (w <= 0 || h <= 0)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_FillRectangle, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBRectangle), &rect,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_FillRectangles( IDirectFBSurface *thiz,
+ const DFBRectangle *rects,
+ unsigned int num_rects )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!rects || !num_rects)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_FillRectangles, VREQ_QUEUE, NULL,
+ VMBT_UINT, num_rects,
+ VMBT_DATA, num_rects * sizeof(DFBRectangle), rects,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_FillSpans( IDirectFBSurface *thiz,
+ int y,
+ const DFBSpan *spans,
+ unsigned int num_spans )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!spans || !num_spans)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_FillSpans, VREQ_QUEUE, NULL,
+ VMBT_INT, y,
+ VMBT_UINT, num_spans,
+ VMBT_DATA, num_spans * sizeof(DFBSpan), spans,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DrawLine( IDirectFBSurface *thiz,
+ int x1, int y1, int x2, int y2 )
+{
+ DFBRegion line = { x1, y1, x2, y2 };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DrawLine, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBRegion), &line,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DrawLines( IDirectFBSurface *thiz,
+ const DFBRegion *lines,
+ unsigned int num_lines )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!lines || !num_lines)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DrawLines, VREQ_QUEUE, NULL,
+ VMBT_UINT, num_lines,
+ VMBT_DATA, num_lines * sizeof(DFBRegion), lines,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DrawRectangle( IDirectFBSurface *thiz,
+ int x, int y, int w, int h )
+{
+ DFBRectangle rect = { x, y, w, h };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (w <= 0 || h <= 0)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DrawRectangle, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBRectangle), &rect,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_FillTriangle( IDirectFBSurface *thiz,
+ int x1, int y1,
+ int x2, int y2,
+ int x3, int y3 )
+{
+ DFBTriangle triangle = { x1, y1, x2, y2, x3, y3 };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_FillTriangle, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(DFBTriangle), &triangle,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetBlittingFlags( IDirectFBSurface *thiz,
+ DFBSurfaceBlittingFlags flags )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetBlittingFlags, VREQ_QUEUE, NULL,
+ VMBT_INT, flags,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Blit( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ const DFBRectangle *rect,
+ int x,
+ int y )
+{
+ DFBPoint point = { x, y };
+
+ IDirectFBSurface_Requestor_data *source_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!source)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Blit, VREQ_QUEUE, NULL,
+ VMBT_ID, source_data->instance,
+ VMBT_ODATA, sizeof(DFBRectangle), rect,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_TileBlit( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ const DFBRectangle *rect,
+ int x,
+ int y )
+{
+ DFBPoint point = { x, y };
+
+ IDirectFBSurface_Requestor_data *source_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!source)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_TileBlit, VREQ_QUEUE, NULL,
+ VMBT_ID, source_data->instance,
+ VMBT_ODATA, sizeof(DFBRectangle), rect,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_BatchBlit( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ const DFBRectangle *source_rects,
+ const DFBPoint *dest_points,
+ int num )
+{
+ IDirectFBSurface_Requestor_data *source_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!source || !source_rects || !dest_points || num < 1)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_BatchBlit, VREQ_QUEUE, NULL,
+ VMBT_ID, source_data->instance,
+ VMBT_UINT, num,
+ VMBT_DATA, num * sizeof(DFBRectangle), source_rects,
+ VMBT_DATA, num * sizeof(DFBPoint), dest_points,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_StretchBlit( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ const DFBRectangle *source_rect,
+ const DFBRectangle *destination_rect )
+{
+ IDirectFBSurface_Requestor_data *source_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!source)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_StretchBlit, VREQ_QUEUE, NULL,
+ VMBT_ID, source_data->instance,
+ VMBT_ODATA, sizeof(DFBRectangle), source_rect,
+ VMBT_ODATA, sizeof(DFBRectangle), destination_rect,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_TextureTriangles( IDirectFBSurface *thiz,
+ IDirectFBSurface *source,
+ const DFBVertex *vertices,
+ const int *indices,
+ int num,
+ DFBTriangleFormation formation )
+{
+ int i;
+ int num_vertices = 0;
+ IDirectFBSurface_Requestor_data *source_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!source || !vertices || num < 3)
+ return DFB_INVARG;
+
+ if (indices) {
+ for (i=0; i<num; i++) {
+ if (num_vertices <= indices[i])
+ num_vertices = indices[i] + 1;
+ }
+ }
+
+ DIRECT_INTERFACE_GET_DATA_FROM( source, source_data, IDirectFBSurface_Requestor );
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_TextureTriangles, VREQ_QUEUE, NULL,
+ VMBT_ID, source_data->instance,
+ VMBT_DATA, num_vertices * sizeof(DFBVertex), vertices,
+ VMBT_ODATA, num * sizeof(int), indices,
+ VMBT_INT, num,
+ VMBT_INT, formation,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DrawString( IDirectFBSurface *thiz,
+ const char *text,
+ int bytes,
+ int x,
+ int y,
+ DFBSurfaceTextFlags flags )
+{
+ DFBPoint point = { x, y };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!text)
+ return DFB_INVARG;
+
+ if (!data->font)
+ return DFB_MISSINGFONT;
+
+
+ if (bytes < 0)
+ bytes = strlen (text);
+
+ if (bytes == 0)
+ return DFB_OK;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DrawString, VREQ_QUEUE, NULL,
+ VMBT_DATA, bytes, text,
+ VMBT_INT, bytes,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_INT, flags,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DrawGlyph( IDirectFBSurface *thiz,
+ unsigned int index,
+ int x,
+ int y,
+ DFBSurfaceTextFlags flags )
+{
+ DFBPoint point = { x, y };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!index)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DrawGlyph, VREQ_QUEUE, NULL,
+ VMBT_UINT, index,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_INT, flags,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetEncoding( IDirectFBSurface *thiz,
+ DFBTextEncodingID encoding )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetEncoding, VREQ_QUEUE, NULL,
+ VMBT_UINT, encoding,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetSubSurface( IDirectFBSurface *thiz,
+ const DFBRectangle *rect,
+ IDirectFBSurface **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooInstanceID instance_id;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_GetSubSurface, VREQ_RESPOND, &response,
+ VMBT_ODATA, sizeof(DFBRectangle), rect,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ instance_id = response->instance;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBSurface",
+ instance_id, data->idirectfb, &interface_ptr );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_GetGL( IDirectFBSurface *thiz,
+ IDirectFBGL **interface_ptr )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!interface_ptr)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Dump( IDirectFBSurface *thiz,
+ const char *directory,
+ const char *prefix )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!directory || !prefix)
+ return DFB_INVARG;
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_DisableAcceleration( IDirectFBSurface *thiz,
+ DFBAccelerationMask mask )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_DisableAcceleration,
+ VREQ_QUEUE, NULL,
+ VMBT_UINT, mask,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_ReleaseSource( IDirectFBSurface *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_ReleaseSource, VREQ_QUEUE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetIndexTranslation( IDirectFBSurface *thiz,
+ const int *indices,
+ int num_indices )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetRenderOptions( IDirectFBSurface *thiz,
+ DFBSurfaceRenderOptions options )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetRenderOptions, VREQ_QUEUE, NULL,
+ VMBT_INT, options,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_SetMatrix( IDirectFBSurface *thiz,
+ const s32 *matrix )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetMatrix, VREQ_QUEUE, NULL,
+ VMBT_DATA, sizeof(s32) * 9, matrix,
+ VMBT_NONE );
+}
+
+#define RLE16_KEY 0xf001
+
+static bool
+rle16_encode( const u16 *src,
+ u16 *dst,
+ unsigned int num,
+ unsigned int *ret_num )
+{
+ unsigned int n, last, count = 0, out = 0;
+
+ for (n=0; n<num; n++) {
+ if (out + 3 > num) {
+ *ret_num = num;
+ return false;
+ }
+
+ if (count > 0) {
+ D_ASSERT( src[n] == last );
+
+ count++;
+ }
+ else {
+ count = 1;
+ last = src[n];
+ }
+
+ if (n == num-1 || src[n+1] != last) {
+ if (count > 2 || (count > 1 && last == RLE16_KEY)) {
+ dst[out++] = RLE16_KEY;
+ dst[out++] = count;
+ dst[out++] = last;
+ }
+ else {
+ if (count > 1 || last == RLE16_KEY)
+ dst[out++] = last;
+
+ dst[out++] = last;
+ }
+
+ count = 0;
+ }
+ }
+
+ *ret_num = out;
+
+ return true;
+}
+
+#define RLE32_KEY 0xf0012345
+
+static bool
+rle32_encode( const u32 *src,
+ u32 *dst,
+ unsigned int num,
+ unsigned int *ret_num )
+{
+ unsigned int n, last, count = 0, out = 0;
+
+ for (n=0; n<num; n++) {
+ if (out + 3 > num) {
+ *ret_num = num;
+ return false;
+ }
+
+ if (count > 0) {
+ D_ASSERT( src[n] == last );
+
+ count++;
+ }
+ else {
+ count = 1;
+ last = src[n];
+ }
+
+ if (n == num-1 || src[n+1] != last) {
+ if (count > 2 || (count > 1 && last == RLE32_KEY)) {
+ dst[out++] = RLE32_KEY;
+ dst[out++] = count;
+ dst[out++] = last;
+ }
+ else {
+ if (count > 1 || last == RLE32_KEY)
+ dst[out++] = last;
+
+ dst[out++] = last;
+ }
+
+ count = 0;
+ }
+ }
+
+ *ret_num = out;
+
+ return true;
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Write( IDirectFBSurface *thiz,
+ const DFBRectangle *rect,
+ const void *ptr,
+ int pitch )
+{
+ DFBResult ret = DFB_OK;
+ int y;
+ DFBRectangle r;
+ DFBSurfacePixelFormat format;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ if (!rect || !ptr)
+ return DFB_INVARG;
+
+ thiz->GetPixelFormat( thiz, &format );
+
+ r.x = rect->x;
+ r.y = rect->y;
+ r.w = rect->w;
+ r.h = 1;
+
+ /* Use RLE only if Voodoo is not compressed already */
+ switch (voodoo_config->compression_min ? DSPF_UNKNOWN : format) {
+ case DSPF_RGB16:
+ case DSPF_ARGB1555: {
+ unsigned int num;
+ u16 *buf = (u16*) D_MALLOC( rect->w * 2 );
+
+ if (buf) {
+ for (y=0; y<rect->h; y++) {
+ bool encoded = rle16_encode( (u16*)((char*) ptr + y * pitch), buf, rect->w, &num );
+
+ //D_INFO( "%3d: %u -> %u\n", r.y, rect->w, num );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Write, VREQ_QUEUE, NULL,
+ VMBT_UINT, encoded ? 2 : 0,
+ VMBT_DATA, sizeof(DFBRectangle), &r,
+ VMBT_DATA, DFB_BYTES_PER_LINE( format, num ),
+ encoded ? buf : (u16*)((char*) ptr + y * pitch),
+ VMBT_INT, ABS(pitch),
+ VMBT_NONE );
+ if (ret)
+ break;
+
+ r.y++;
+ }
+
+ D_FREE( buf );
+ }
+ else
+ D_OOM();
+
+ break;
+ }
+
+ case DSPF_RGB32:
+ case DSPF_ARGB: {
+ unsigned int num;
+ u32 *buf = (u32*) D_MALLOC( rect->w * 4 );
+
+ if (buf) {
+ for (y=0; y<rect->h; y++) {
+ bool encoded = rle32_encode( (u32*)((char*) ptr + y * pitch), buf, rect->w, &num );
+
+ //D_INFO( "%3d: %u -> %u\n", r.y, rect->w, num );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Write, VREQ_QUEUE, NULL,
+ VMBT_UINT, encoded ? 4 : 0,
+ VMBT_DATA, sizeof(DFBRectangle), &r,
+ VMBT_DATA, DFB_BYTES_PER_LINE( format, num ),
+ encoded ? buf : (u32*)((char*) ptr + y * pitch),
+ VMBT_INT, ABS(pitch),
+ VMBT_NONE );
+ if (ret)
+ break;
+
+ r.y++;
+ }
+
+ D_FREE( buf );
+ }
+ else
+ D_OOM();
+
+ break;
+ }
+
+ default:
+ for (y=0; y<rect->h; y++) {
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Write, VREQ_QUEUE, NULL,
+ VMBT_UINT, false,
+ VMBT_DATA, sizeof(DFBRectangle), &r,
+ VMBT_DATA, DFB_BYTES_PER_LINE( format, rect->w ), (char*) ptr + y * pitch,
+ VMBT_INT, ABS(pitch),
+ VMBT_NONE );
+ if (ret)
+ break;
+
+ r.y++;
+ }
+ break;
+ }
+
+ return ret;
+}
+
+
+#define RLE16_KEY 0xf001
+
+static void
+rle16_decode( const u16 *src,
+ u16 *dst,
+ unsigned int num )
+{
+ unsigned int n = 0, last, count, out = 0;
+
+ while (out < num) {
+ last = src[n++];
+
+ if (last == RLE16_KEY) {
+ count = src[n++];
+
+ if (count == RLE16_KEY) {
+ dst[out++] = RLE16_KEY;
+ }
+ else {
+ last = src[n++];
+
+ while (count >= 4) {
+ dst[out+0] =
+ dst[out+1] =
+ dst[out+2] =
+ dst[out+3] = last;
+
+ out += 4;
+ count -= 4;
+ }
+
+ while (count >= 2) {
+ dst[out+0] =
+ dst[out+1] = last;
+
+ out += 2;
+ count -= 2;
+ }
+
+ while (count--)
+ dst[out++] = last;
+ }
+ }
+ else
+ dst[out++] = last;
+ }
+
+ D_ASSERT( out == num );
+}
+
+#define RLE32_KEY 0xf0012345
+
+static void
+rle32_decode( const u32 *src,
+ u32 *dst,
+ unsigned int num )
+{
+ unsigned int n = 0, last, count, out = 0;
+
+ while (out < num) {
+ last = src[n++];
+
+ if (last == RLE32_KEY) {
+ count = src[n++];
+
+ if (count == RLE32_KEY) {
+ dst[out++] = RLE32_KEY;
+ }
+ else {
+ last = src[n++];
+
+ while (count >= 4) {
+ dst[out+0] =
+ dst[out+1] =
+ dst[out+2] =
+ dst[out+3] = last;
+
+ out += 4;
+ count -= 4;
+ }
+
+ while (count >= 2) {
+ dst[out+0] =
+ dst[out+1] = last;
+
+ out += 2;
+ count -= 2;
+ }
+
+ while (count--)
+ dst[out++] = last;
+ }
+ }
+ else
+ dst[out++] = last;
+ }
+
+ D_ASSERT( out == num );
+}
+
+static DFBResult
+IDirectFBSurface_Requestor_Read( IDirectFBSurface *thiz,
+ const DFBRectangle *rect,
+ void *ptr,
+ int pitch )
+{
+ DFBResult ret = DFB_OK;
+ int y;
+ DFBSurfacePixelFormat format;
+ VoodooMessageParser parser;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ D_DEBUG_AT( IDirectFBSurface_Requestor_, "%s( %p, %p, %d )\n", __FUNCTION__, rect, ptr, pitch );
+
+ if (!rect || !ptr)
+ return DFB_INVARG;
+
+ D_DEBUG_AT( IDirectFBSurface_Requestor_, " -> %4d,%4d-%4dx%4d\n", DFB_RECTANGLE_VALS(rect) );
+
+ thiz->GetPixelFormat( thiz, &format );
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBSURFACE_METHOD_ID_Read, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(DFBRectangle), rect,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ for (y=0; y<rect->h; y++) {
+ unsigned int encoded;
+ const void *buf;
+
+ D_DEBUG_AT( IDirectFBSurface_Requestor_, " -> [%d]\n", y );
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, encoded );
+ VOODOO_PARSER_GET_DATA( parser, buf );
+ VOODOO_PARSER_END( parser );
+
+ ret = response->result;
+ if (ret)
+ break;
+
+
+ if (encoded) {
+ switch (encoded) {
+ case 2:
+ rle16_decode( buf, (u16*)((char*) ptr + pitch * y), rect->w );
+ break;
+
+ case 4:
+ rle32_decode( buf, (u32*)((char*) ptr + pitch * y), rect->w );
+ break;
+
+ default:
+ D_UNIMPLEMENTED();
+ break;
+ }
+ }
+ else
+ direct_memcpy( (char*) ptr + pitch * y, buf, DFB_BYTES_PER_LINE(format, rect->w) );
+
+
+ if (y < rect->h - 1)
+ voodoo_manager_next_response( data->manager, response, &response );
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+
+/**************************************************************************************************/
+
+static DirectResult
+Dispatch_FlipNotify( IDirectFBSurface *thiz, IDirectFBSurface *real,
+ VoodooManager *manager, VoodooRequestMessage *msg )
+{
+ VoodooMessageParser parser;
+ unsigned int millis;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Requestor)
+
+ direct_mutex_lock( &data->flip.lock );
+
+
+ VOODOO_PARSER_BEGIN( parser, msg );
+ VOODOO_PARSER_GET_UINT( parser, millis );
+ VOODOO_PARSER_END( parser );
+
+
+ Handle_FlipReturned( thiz, millis );
+
+
+ direct_mutex_unlock( &data->flip.lock );
+
+ direct_waitqueue_signal( &data->flip.queue );
+
+ return DR_OK;
+}
+
+static DirectResult
+LocalDispatch( void *dispatcher,
+ void *real,
+ VoodooManager *manager,
+ VoodooRequestMessage *msg )
+{
+ D_DEBUG( "IDirectFBSurface_Requestor/LocalDispatch: "
+ "Handling request for instance %u with method %u...\n", msg->instance, msg->method );
+
+ switch (msg->method) {
+ case IDIRECTFBSURFACE_REQUESTOR_METHOD_ID_FlipNotify:
+ return Dispatch_FlipNotify( real, real, manager, msg );
+ }
+
+ return DFB_NOSUCHMETHOD;
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBSurface *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DFBResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBSurface_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+ data->idirectfb = arg;
+
+
+ direct_mutex_init( &data->flip.lock );
+ direct_waitqueue_init( &data->flip.queue );
+
+ if (dfb_config->flip_notify_max_latency) {
+ ret = voodoo_manager_register_local( manager, VOODOO_INSTANCE_NONE, NULL, thiz, LocalDispatch, &data->local );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not register local dispatch!\n" );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ ret = voodoo_manager_request( manager, instance,
+ IDIRECTFBSURFACE_METHOD_ID_SetRemoteInstance, VREQ_RESPOND, &response,
+ VMBT_ID, data->local,
+ VMBT_NONE );
+ if (ret)
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not set remote instance, FlipNotify not used!\n" );
+ else if (response->result)
+ D_DERROR( response->result, "IDirectFBSurface_Requestor: Could not set remote instance, FlipNotify not used!\n" );
+ else {
+ D_INFO( "IDirectFBSurface_Requestor: Using FlipNotify\n" );
+
+ data->flip.use_notify = true;
+ }
+
+ voodoo_manager_finish_request( manager, response );
+
+ /*
+ * Implement fallback for missing FlipNotify support via event buffer and hidden window
+ */
+ if (!data->flip.use_notify) {
+ DFBWindowDescription desc;
+ IDirectFBDisplayLayer *layer;
+
+ ret = data->idirectfb->CreateEventBuffer( data->idirectfb, &data->flip.buffer );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not create event buffer for FlipNotify fallback!\n" );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ ret = data->idirectfb->GetDisplayLayer( data->idirectfb, DLID_PRIMARY, &layer );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not get display layer for FlipNotify fallback!\n" );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ desc.flags = DWDESC_CAPS;
+ desc.caps = DWCAPS_INPUTONLY | DWCAPS_NODECORATION;
+
+ ret = layer->CreateWindow( layer, &desc, &data->flip.window );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not create window for FlipNotify fallback!\n" );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ ret = data->flip.window->AttachEventBuffer( data->flip.window, data->flip.buffer );
+ if (ret) {
+ D_DERROR( ret, "IDirectFBSurface_Requestor: Could not attach event buffer for FlipNotify fallback!\n" );
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+ return ret;
+ }
+
+ layer->Release( layer );
+
+
+ D_INFO( "IDirectFBSurface_Requestor: Using FlipNotify fallback via event buffer/window!\n" );
+
+ data->flip.use_buffer = true;
+ }
+ }
+
+ thiz->AddRef = IDirectFBSurface_Requestor_AddRef;
+ thiz->Release = IDirectFBSurface_Requestor_Release;
+
+ thiz->GetCapabilities = IDirectFBSurface_Requestor_GetCapabilities;
+ thiz->GetPosition = IDirectFBSurface_Requestor_GetPosition;
+ thiz->GetSize = IDirectFBSurface_Requestor_GetSize;
+ thiz->GetVisibleRectangle = IDirectFBSurface_Requestor_GetVisibleRectangle;
+ thiz->GetPixelFormat = IDirectFBSurface_Requestor_GetPixelFormat;
+ thiz->GetAccelerationMask = IDirectFBSurface_Requestor_GetAccelerationMask;
+
+ thiz->GetPalette = IDirectFBSurface_Requestor_GetPalette;
+ thiz->SetPalette = IDirectFBSurface_Requestor_SetPalette;
+ thiz->SetAlphaRamp = IDirectFBSurface_Requestor_SetAlphaRamp;
+
+ thiz->Lock = IDirectFBSurface_Requestor_Lock;
+ thiz->GetFramebufferOffset = IDirectFBSurface_Requestor_GetFramebufferOffset;
+ thiz->Unlock = IDirectFBSurface_Requestor_Unlock;
+ thiz->Flip = IDirectFBSurface_Requestor_Flip;
+ thiz->SetField = IDirectFBSurface_Requestor_SetField;
+ thiz->Clear = IDirectFBSurface_Requestor_Clear;
+
+ thiz->SetClip = IDirectFBSurface_Requestor_SetClip;
+ thiz->SetColor = IDirectFBSurface_Requestor_SetColor;
+ thiz->SetColorIndex = IDirectFBSurface_Requestor_SetColorIndex;
+ thiz->SetSrcBlendFunction = IDirectFBSurface_Requestor_SetSrcBlendFunction;
+ thiz->SetDstBlendFunction = IDirectFBSurface_Requestor_SetDstBlendFunction;
+ thiz->SetPorterDuff = IDirectFBSurface_Requestor_SetPorterDuff;
+ thiz->SetSrcColorKey = IDirectFBSurface_Requestor_SetSrcColorKey;
+ thiz->SetSrcColorKeyIndex = IDirectFBSurface_Requestor_SetSrcColorKeyIndex;
+ thiz->SetDstColorKey = IDirectFBSurface_Requestor_SetDstColorKey;
+ thiz->SetDstColorKeyIndex = IDirectFBSurface_Requestor_SetDstColorKeyIndex;
+
+ thiz->SetBlittingFlags = IDirectFBSurface_Requestor_SetBlittingFlags;
+ thiz->Blit = IDirectFBSurface_Requestor_Blit;
+ thiz->TileBlit = IDirectFBSurface_Requestor_TileBlit;
+ thiz->BatchBlit = IDirectFBSurface_Requestor_BatchBlit;
+ thiz->StretchBlit = IDirectFBSurface_Requestor_StretchBlit;
+ thiz->TextureTriangles = IDirectFBSurface_Requestor_TextureTriangles;
+
+ thiz->SetDrawingFlags = IDirectFBSurface_Requestor_SetDrawingFlags;
+ thiz->FillRectangle = IDirectFBSurface_Requestor_FillRectangle;
+ thiz->FillRectangles = IDirectFBSurface_Requestor_FillRectangles;
+ thiz->FillSpans = IDirectFBSurface_Requestor_FillSpans;
+ thiz->DrawLine = IDirectFBSurface_Requestor_DrawLine;
+ thiz->DrawLines = IDirectFBSurface_Requestor_DrawLines;
+ thiz->DrawRectangle = IDirectFBSurface_Requestor_DrawRectangle;
+ thiz->FillTriangle = IDirectFBSurface_Requestor_FillTriangle;
+
+ thiz->SetFont = IDirectFBSurface_Requestor_SetFont;
+ thiz->GetFont = IDirectFBSurface_Requestor_GetFont;
+ thiz->DrawString = IDirectFBSurface_Requestor_DrawString;
+ thiz->DrawGlyph = IDirectFBSurface_Requestor_DrawGlyph;
+ thiz->SetEncoding = IDirectFBSurface_Requestor_SetEncoding;
+
+ thiz->GetSubSurface = IDirectFBSurface_Requestor_GetSubSurface;
+
+ thiz->GetGL = IDirectFBSurface_Requestor_GetGL;
+
+ thiz->Dump = IDirectFBSurface_Requestor_Dump;
+
+ thiz->DisableAcceleration = IDirectFBSurface_Requestor_DisableAcceleration;
+
+ thiz->ReleaseSource = IDirectFBSurface_Requestor_ReleaseSource;
+
+ thiz->SetIndexTranslation = IDirectFBSurface_Requestor_SetIndexTranslation;
+
+ thiz->SetRenderOptions = IDirectFBSurface_Requestor_SetRenderOptions;
+ thiz->SetMatrix = IDirectFBSurface_Requestor_SetMatrix;
+
+ thiz->Read = IDirectFBSurface_Requestor_Read;
+ thiz->Write = IDirectFBSurface_Requestor_Write;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.h
new file mode 100755
index 0000000..27599a9
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.h
@@ -0,0 +1,80 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBSURFACE_REQUESTOR_H__
+#define __IDIRECTFBSURFACE_REQUESTOR_H__
+
+#include <directfb.h>
+
+#include <direct/thread.h>
+
+#include <voodoo/manager.h>
+
+#define IDIRECTFBSURFACE_REQUESTOR_METHOD_ID_FlipNotify 1
+
+/*
+ * private data struct of IDirectFBSurface_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ IDirectFB *idirectfb;
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+ VoodooInstanceID local;
+
+ IDirectFBFont *font;
+
+ DFBSurfacePixelFormat format;
+
+ struct {
+ bool use_notify;
+
+ DirectMutex lock;
+ DirectWaitQueue queue;
+
+ unsigned int requested;
+ unsigned int returned;
+ unsigned int end;
+
+ long long fps_stamp;
+ unsigned int fps_count;
+ unsigned int fps_old;
+
+
+
+ bool use_buffer;
+
+ IDirectFBEventBuffer *buffer;
+ IDirectFBWindow *window;
+ } flip;
+} IDirectFBSurface_Requestor_data;
+
+#endif
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.c b/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.c
new file mode 100755
index 0000000..08e4ff2
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.c
@@ -0,0 +1,1120 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/interface.h>
+#include <direct/mem.h>
+#include <direct/memcpy.h>
+#include <direct/messages.h>
+#include <direct/util.h>
+
+#include <voodoo/client.h>
+#include <voodoo/interface.h>
+#include <voodoo/manager.h>
+
+#include <input/idirectfbinputbuffer.h>
+
+#include <idirectfbeventbuffer_dispatcher.h>
+#include <idirectfbwindow_dispatcher.h>
+
+#include "idirectfbsurface_requestor.h"
+#include "idirectfbwindow_requestor.h"
+
+
+static DFBResult Probe( void );
+static DFBResult Construct( IDirectFBWindow *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg );
+
+#include <direct/interface_implementation.h>
+
+DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBWindow, Requestor )
+
+
+/**************************************************************************************************/
+
+static void
+IDirectFBWindow_Requestor_Destruct( IDirectFBWindow *thiz )
+{
+ IDirectFBWindow_Requestor_data *data = thiz->priv;
+
+ D_DEBUG( "%s (%p)\n", __FUNCTION__, thiz );
+
+ voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Release, VREQ_NONE, NULL,
+ VMBT_NONE );
+
+ DIRECT_DEALLOCATE_INTERFACE( thiz );
+}
+
+/**************************************************************************************************/
+
+static DirectResult
+IDirectFBWindow_Requestor_AddRef( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ data->ref++;
+
+ return DFB_OK;
+}
+
+static DirectResult
+IDirectFBWindow_Requestor_Release( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (--data->ref == 0)
+ IDirectFBWindow_Requestor_Destruct( thiz );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_CreateEventBuffer( IDirectFBWindow *thiz,
+ IDirectFBEventBuffer **ret_interface )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer *buffer;
+ IDirectFBEventBuffer *dispatcher;
+ VoodooInstanceID instance;
+ VoodooResponseMessage *response;
+ void *ptr;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ /* Create the real interface. */
+ DIRECT_ALLOCATE_INTERFACE( buffer, IDirectFBEventBuffer );
+
+ IDirectFBEventBuffer_Construct( buffer, NULL, NULL );
+
+ /* Create the dispatcher. */
+ ret = voodoo_construct_dispatcher( data->manager, "IDirectFBEventBuffer",
+ buffer, data->instance, NULL, &instance, &ptr );
+ if (ret) {
+ buffer->Release( buffer );
+ return ret;
+ }
+
+ dispatcher = ptr;
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_CreateEventBuffer, VREQ_RESPOND, &response,
+ VMBT_ID, instance,
+ VMBT_NONE );
+ if (ret) {
+ dispatcher->Release( dispatcher );
+ return ret;
+ }
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ /* Return the dispatcher interface. */
+ *ret_interface = dispatcher;
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_AttachEventBuffer( IDirectFBWindow *thiz,
+ IDirectFBEventBuffer *buffer )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer_Dispatcher_data *buffer_data;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!buffer)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( buffer, buffer_data, IDirectFBEventBuffer_Dispatcher );
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_AttachEventBuffer, VREQ_RESPOND, &response,
+ VMBT_ID, buffer_data->self,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_DetachEventBuffer( IDirectFBWindow *thiz,
+ IDirectFBEventBuffer *buffer )
+{
+ DFBResult ret;
+ IDirectFBEventBuffer_Dispatcher_data *buffer_data;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!buffer)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( buffer, buffer_data, IDirectFBEventBuffer_Dispatcher );
+
+ /* Send the request including the instance ID of the dispatcher. */
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_DetachEventBuffer, VREQ_RESPOND, &response,
+ VMBT_ID, buffer_data->self,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_EnableEvents( IDirectFBWindow *thiz,
+ DFBWindowEventType mask )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_EnableEvents, VREQ_NONE, NULL,
+ VMBT_UINT, mask,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_DisableEvents( IDirectFBWindow *thiz,
+ DFBWindowEventType mask )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetID( IDirectFBWindow *thiz,
+ DFBWindowID *ret_id )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBWindowID id;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_id)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetID, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_ID( parser, id );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_id = id;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetPosition( IDirectFBWindow *thiz,
+ int *x,
+ int *y )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBPoint *position;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!x && !y)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetPosition, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, position );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (x)
+ *x = position->x;
+
+ if (y)
+ *y = position->y;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetSize( IDirectFBWindow *thiz,
+ int *width,
+ int *height )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const DFBDimension *size;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!width && !height)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetSize, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_DATA( parser, size );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ if (width)
+ *width = size->w;
+
+ if (height)
+ *height = size->h;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetSurface( IDirectFBWindow *thiz,
+ IDirectFBSurface **ret_interface )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooInstanceID instance_id;
+ void *interface_ptr = NULL;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_interface)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetSurface, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ /* Copy and finish as we do our next request in surface constructor already! */
+ instance_id = response->instance;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ ret = response->result;
+ if (ret == DR_OK)
+ ret = voodoo_construct_requestor( data->manager, "IDirectFBSurface",
+ instance_id, data->idirectfb, &interface_ptr );
+
+ *ret_interface = interface_ptr;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetProperty( IDirectFBWindow *thiz,
+ const char *key,
+ void *value,
+ void **old_value )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetProperty( IDirectFBWindow *thiz,
+ const char *key,
+ void **ret_value )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ const char *value;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_value)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetProperty, VREQ_RESPOND, &response,
+ VMBT_STRING, key,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_STRING( parser, value );
+ VOODOO_PARSER_END( parser );
+
+ *ret_value = D_STRDUP( value ); // FIXME: LEAK
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return DFB_OK;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_RemoveProperty( IDirectFBWindow *thiz,
+ const char *key,
+ void **value )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetOptions( IDirectFBWindow *thiz,
+ DFBWindowOptions options )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (options & ~DWOP_ALL)
+ return DFB_INVARG;
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetOptions, VREQ_NONE, NULL,
+ VMBT_INT, options,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetOptions( IDirectFBWindow *thiz,
+ DFBWindowOptions *ret_options )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ DFBWindowOptions options;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_options)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetOptions, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_INT( parser, options );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_options = options;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetColorKey( IDirectFBWindow *thiz,
+ u8 r,
+ u8 g,
+ u8 b )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetColorKeyIndex( IDirectFBWindow *thiz,
+ unsigned int index )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetOpaqueRegion( IDirectFBWindow *thiz,
+ int x1,
+ int y1,
+ int x2,
+ int y2 )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetOpacity( IDirectFBWindow *thiz,
+ u8 opacity )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetOpacity, VREQ_NONE, NULL,
+ VMBT_UINT, opacity,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GetOpacity( IDirectFBWindow *thiz,
+ u8 *ret_opacity )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ VoodooMessageParser parser;
+ u8 opacity;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!ret_opacity)
+ return DFB_INVARG;
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GetOpacity, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+ if (ret) {
+ voodoo_manager_finish_request( data->manager, response );
+ return ret;
+ }
+
+ VOODOO_PARSER_BEGIN( parser, response );
+ VOODOO_PARSER_GET_UINT( parser, opacity );
+ VOODOO_PARSER_END( parser );
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ *ret_opacity = opacity;
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetCursorShape( IDirectFBWindow *thiz,
+ IDirectFBSurface *shape,
+ int hot_x,
+ int hot_y )
+{
+ DFBPoint hot = { hot_x, hot_y };
+ DirectResult ret;
+ VoodooResponseMessage *response;
+ IDirectFBSurface_Requestor_data *shape_data;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ if (!shape)
+ return DFB_INVARG;
+
+ DIRECT_INTERFACE_GET_DATA_FROM( shape, shape_data, IDirectFBSurface_Requestor);
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetCursorShape, VREQ_RESPOND, &response,
+ VMBT_ID, shape_data->instance,
+ VMBT_DATA, sizeof(DFBPoint), &hot,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_RequestFocus( IDirectFBWindow *thiz )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_RequestFocus, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GrabKeyboard( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_UngrabKeyboard( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GrabPointer( IDirectFBWindow *thiz )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_GrabPointer, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_UngrabPointer( IDirectFBWindow *thiz )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_UngrabPointer, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GrabKey( IDirectFBWindow *thiz,
+ DFBInputDeviceKeySymbol symbol,
+ DFBInputDeviceModifierMask modifiers )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_UngrabKey( IDirectFBWindow *thiz,
+ DFBInputDeviceKeySymbol symbol,
+ DFBInputDeviceModifierMask modifiers )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Move( IDirectFBWindow *thiz, int dx, int dy )
+{
+ DFBPoint point = { dx, dy };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Move, VREQ_NONE, NULL,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_MoveTo( IDirectFBWindow *thiz, int x, int y )
+{
+ DFBPoint point = { x, y };
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_MoveTo, VREQ_NONE, NULL,
+ VMBT_DATA, sizeof(point), &point,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Resize( IDirectFBWindow *thiz,
+ int width,
+ int height )
+{
+ DirectResult ret;
+ DFBDimension size = { width, height };
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Resize, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(size), &size,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Raise( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Raise, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetStackingClass( IDirectFBWindow *thiz,
+ DFBWindowStackingClass stacking_class )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetStackingClass, VREQ_NONE, NULL,
+ VMBT_INT, stacking_class,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Lower( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Lower, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_RaiseToTop( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_RaiseToTop, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_LowerToBottom( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_LowerToBottom, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_PutAtop( IDirectFBWindow *thiz,
+ IDirectFBWindow *lower )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_PutBelow( IDirectFBWindow *thiz,
+ IDirectFBWindow *upper )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ D_UNIMPLEMENTED();
+
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Close( IDirectFBWindow *thiz )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Close, VREQ_NONE, NULL,
+ VMBT_NONE );
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Destroy( IDirectFBWindow *thiz )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_Destroy, VREQ_RESPOND, &response,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetBounds( IDirectFBWindow *thiz,
+ int x, int y, int w, int h )
+{
+ DirectResult ret;
+ DFBRectangle bounds = { x, y, w, h };
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetBounds, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(bounds), &bounds,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_ResizeSurface( IDirectFBWindow *thiz,
+ int width,
+ int height )
+{
+ DirectResult ret;
+ DFBDimension size = { width, height };
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_ResizeSurface, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(size), &size,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Bind( IDirectFBWindow *thiz,
+ IDirectFBWindow *source,
+ int x,
+ int y )
+{
+ D_UNIMPLEMENTED();
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_Unbind( IDirectFBWindow *thiz,
+ IDirectFBWindow *source )
+{
+ D_UNIMPLEMENTED();
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetKeySelection( IDirectFBWindow *thiz,
+ DFBWindowKeySelection selection,
+ const DFBInputDeviceKeySymbol *keys,
+ unsigned int num_keys )
+{
+ D_UNIMPLEMENTED();
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_GrabUnselectedKeys( IDirectFBWindow *thiz )
+{
+ D_UNIMPLEMENTED();
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_UngrabUnselectedKeys( IDirectFBWindow *thiz )
+{
+ D_UNIMPLEMENTED();
+ return DFB_UNIMPLEMENTED;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetSrcGeometry( IDirectFBWindow *thiz,
+ const DFBWindowGeometry *geometry )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetSrcGeometry, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(DFBWindowGeometry), geometry,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SetDstGeometry( IDirectFBWindow *thiz,
+ const DFBWindowGeometry *geometry )
+{
+ DirectResult ret;
+ VoodooResponseMessage *response;
+
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ ret = voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SetDstGeometry, VREQ_RESPOND, &response,
+ VMBT_DATA, sizeof(DFBWindowGeometry), geometry,
+ VMBT_NONE );
+ if (ret)
+ return ret;
+
+ ret = response->result;
+
+ voodoo_manager_finish_request( data->manager, response );
+
+ return ret;
+}
+
+static DFBResult
+IDirectFBWindow_Requestor_SendEvent( IDirectFBWindow *thiz,
+ const DFBWindowEvent *event )
+{
+ DIRECT_INTERFACE_GET_DATA(IDirectFBWindow_Requestor)
+
+ return voodoo_manager_request( data->manager, data->instance,
+ IDIRECTFBWINDOW_METHOD_ID_SendEvent, VREQ_NONE, NULL,
+ VMBT_DATA, sizeof(DFBWindowEvent), event,
+ VMBT_NONE );
+}
+
+/**************************************************************************************************/
+
+static DFBResult
+Probe()
+{
+ /* This implementation has to be loaded explicitly. */
+ return DFB_UNSUPPORTED;
+}
+
+static DFBResult
+Construct( IDirectFBWindow *thiz,
+ VoodooManager *manager,
+ VoodooInstanceID instance,
+ void *arg )
+{
+ DIRECT_ALLOCATE_INTERFACE_DATA(thiz, IDirectFBWindow_Requestor)
+
+ data->ref = 1;
+ data->manager = manager;
+ data->instance = instance;
+ data->idirectfb = arg;
+
+ thiz->AddRef = IDirectFBWindow_Requestor_AddRef;
+ thiz->Release = IDirectFBWindow_Requestor_Release;
+ thiz->GetID = IDirectFBWindow_Requestor_GetID;
+ thiz->GetPosition = IDirectFBWindow_Requestor_GetPosition;
+ thiz->GetSize = IDirectFBWindow_Requestor_GetSize;
+ thiz->CreateEventBuffer = IDirectFBWindow_Requestor_CreateEventBuffer;
+ thiz->AttachEventBuffer = IDirectFBWindow_Requestor_AttachEventBuffer;
+ thiz->DetachEventBuffer = IDirectFBWindow_Requestor_DetachEventBuffer;
+ thiz->EnableEvents = IDirectFBWindow_Requestor_EnableEvents;
+ thiz->DisableEvents = IDirectFBWindow_Requestor_DisableEvents;
+ thiz->GetSurface = IDirectFBWindow_Requestor_GetSurface;
+ thiz->SetProperty = IDirectFBWindow_Requestor_SetProperty;
+ thiz->GetProperty = IDirectFBWindow_Requestor_GetProperty;
+ thiz->RemoveProperty = IDirectFBWindow_Requestor_RemoveProperty;
+ thiz->SetOptions = IDirectFBWindow_Requestor_SetOptions;
+ thiz->GetOptions = IDirectFBWindow_Requestor_GetOptions;
+ thiz->SetColorKey = IDirectFBWindow_Requestor_SetColorKey;
+ thiz->SetColorKeyIndex = IDirectFBWindow_Requestor_SetColorKeyIndex;
+ thiz->SetOpaqueRegion = IDirectFBWindow_Requestor_SetOpaqueRegion;
+ thiz->SetOpacity = IDirectFBWindow_Requestor_SetOpacity;
+ thiz->GetOpacity = IDirectFBWindow_Requestor_GetOpacity;
+ thiz->SetCursorShape = IDirectFBWindow_Requestor_SetCursorShape;
+ thiz->RequestFocus = IDirectFBWindow_Requestor_RequestFocus;
+ thiz->GrabKeyboard = IDirectFBWindow_Requestor_GrabKeyboard;
+ thiz->UngrabKeyboard = IDirectFBWindow_Requestor_UngrabKeyboard;
+ thiz->GrabPointer = IDirectFBWindow_Requestor_GrabPointer;
+ thiz->UngrabPointer = IDirectFBWindow_Requestor_UngrabPointer;
+ thiz->GrabKey = IDirectFBWindow_Requestor_GrabKey;
+ thiz->UngrabKey = IDirectFBWindow_Requestor_UngrabKey;
+ thiz->Move = IDirectFBWindow_Requestor_Move;
+ thiz->MoveTo = IDirectFBWindow_Requestor_MoveTo;
+ thiz->Resize = IDirectFBWindow_Requestor_Resize;
+ thiz->SetStackingClass = IDirectFBWindow_Requestor_SetStackingClass;
+ thiz->Raise = IDirectFBWindow_Requestor_Raise;
+ thiz->Lower = IDirectFBWindow_Requestor_Lower;
+ thiz->RaiseToTop = IDirectFBWindow_Requestor_RaiseToTop;
+ thiz->LowerToBottom = IDirectFBWindow_Requestor_LowerToBottom;
+ thiz->PutAtop = IDirectFBWindow_Requestor_PutAtop;
+ thiz->PutBelow = IDirectFBWindow_Requestor_PutBelow;
+ thiz->Close = IDirectFBWindow_Requestor_Close;
+ thiz->Destroy = IDirectFBWindow_Requestor_Destroy;
+ thiz->SetBounds = IDirectFBWindow_Requestor_SetBounds;
+ thiz->ResizeSurface = IDirectFBWindow_Requestor_ResizeSurface;
+ thiz->Bind = IDirectFBWindow_Requestor_Bind;
+ thiz->Unbind = IDirectFBWindow_Requestor_Unbind;
+ thiz->SetKeySelection = IDirectFBWindow_Requestor_SetKeySelection;
+ thiz->GrabUnselectedKeys = IDirectFBWindow_Requestor_GrabUnselectedKeys;
+ thiz->UngrabUnselectedKeys = IDirectFBWindow_Requestor_UngrabUnselectedKeys;
+ thiz->SetSrcGeometry = IDirectFBWindow_Requestor_SetSrcGeometry;
+ thiz->SetDstGeometry = IDirectFBWindow_Requestor_SetDstGeometry;
+ thiz->SendEvent = IDirectFBWindow_Requestor_SendEvent;
+
+ return DFB_OK;
+}
+
diff --git a/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.h b/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.h
new file mode 100755
index 0000000..8499a69
--- /dev/null
+++ b/Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.h
@@ -0,0 +1,47 @@
+/*
+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#ifndef __IDIRECTFBWINDOW_REQUESTOR_H__
+#define __IDIRECTFBWINDOW_REQUESTOR_H__
+
+#include <voodoo/manager.h>
+
+/*
+ * private data struct of IDirectFBWindow_Requestor
+ */
+typedef struct {
+ int ref; /* reference counter */
+
+ IDirectFB *idirectfb;
+
+ VoodooManager *manager;
+ VoodooInstanceID instance;
+} IDirectFBWindow_Requestor_data;
+
+#endif
+