From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/proxy/requestor/Makefile.am | 125 ++ Source/DirectFB/proxy/requestor/Makefile.in | 1401 +++++++++++++++ .../DirectFB/proxy/requestor/idirectfb_requestor.c | 1045 +++++++++++ .../requestor/idirectfbdatabuffer_requestor.c | 484 +++++ .../requestor/idirectfbdisplaylayer_requestor.c | 721 ++++++++ .../requestor/idirectfbdisplaylayer_requestor.h | 47 + .../requestor/idirectfbeventbuffer_requestor.c | 300 ++++ .../requestor/idirectfbeventbuffer_requestor.h | 54 + .../proxy/requestor/idirectfbfont_requestor.c | 530 ++++++ .../proxy/requestor/idirectfbfont_requestor.h | 47 + .../proxy/requestor/idirectfbfoo_requestor.c | 135 ++ .../proxy/requestor/idirectfbfoo_requestor.h | 45 + .../requestor/idirectfbimageprovider_requestor.c | 264 +++ .../requestor/idirectfbinputdevice_requestor.c | 469 +++++ .../requestor/idirectfbinputdevice_requestor.h | 45 + .../proxy/requestor/idirectfbpalette_requestor.c | 335 ++++ .../proxy/requestor/idirectfbpalette_requestor.h | 45 + .../proxy/requestor/idirectfbscreen_requestor.c | 524 ++++++ .../proxy/requestor/idirectfbsurface_requestor.c | 1852 ++++++++++++++++++++ .../proxy/requestor/idirectfbsurface_requestor.h | 80 + .../proxy/requestor/idirectfbwindow_requestor.c | 1120 ++++++++++++ .../proxy/requestor/idirectfbwindow_requestor.h | 47 + 22 files changed, 9715 insertions(+) create mode 100755 Source/DirectFB/proxy/requestor/Makefile.am create mode 100755 Source/DirectFB/proxy/requestor/Makefile.in create mode 100755 Source/DirectFB/proxy/requestor/idirectfb_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbdatabuffer_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbdisplaylayer_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbeventbuffer_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbfont_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbfont_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbfoo_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbimageprovider_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbinputdevice_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbpalette_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbscreen_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbsurface_requestor.h create mode 100755 Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.c create mode 100755 Source/DirectFB/proxy/requestor/idirectfbwindow_requestor.h (limited to 'Source/DirectFB/proxy/requestor') 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFB *thiz, const char *host, int session ); + +#include + +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; imanager, 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; imanager, 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; imanager, 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include + +#include + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBDataBuffer *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#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( 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "idirectfbeventbuffer_requestor.h" + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBEventBuffer *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 +#include + +#include + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "idirectfbfont_requestor.h" + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBFont *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "idirectfbfoo_requestor.h" + + +static DFBResult Probe(); +static DFBResult Construct( IDirectFBFoo *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "idirectfbsurface_requestor.h" + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBImageProvider *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include "idirectfbinputdevice_requestor.h" + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBInputDevice *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "idirectfbpalette_requestor.h" + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBPalette *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include +#include + +#include + +#include + +#include +#include +#include + +#include +#include + +#include + + +static DFBResult Probe( void ); +static DFBResult Construct( IDirectFBScreen *thiz, + VoodooManager *manager, + VoodooInstanceID instance, + void *arg ); + +#include + +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; imanager, 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include +#include +#include + +#include + + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#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( 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; imanager, 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) { + *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) { + *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; yh; 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; yh; 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; yh; 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; yh; 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include + +#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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#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( 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 , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + 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 + +/* + * private data struct of IDirectFBWindow_Requestor + */ +typedef struct { + int ref; /* reference counter */ + + IDirectFB *idirectfb; + + VoodooManager *manager; + VoodooInstanceID instance; +} IDirectFBWindow_Requestor_data; + +#endif + -- cgit