Browse Source

removed directfb support.

Ozkan Sezer 2 years ago
parent
commit
3aea865cdf
38 changed files with 2 additions and 6033 deletions
  1. 0 3
      CMakeLists.txt
  2. 0 31
      cmake/sdlchecks.cmake
  3. 0 157
      configure
  4. 0 51
      configure.ac
  5. 0 123
      docs/README-directfb.md
  6. 0 3
      docs/README-linux.md
  7. 0 1
      docs/README.md
  8. 0 3
      include/SDL_config.h.cmake
  9. 0 3
      include/SDL_config.h.in
  10. 0 18
      include/SDL_syswm.h
  11. 2 2
      src/events/SDL_scancode_tables.c
  12. 0 15
      src/render/SDL_render.c
  13. 0 1
      src/render/SDL_sysrender.h
  14. 0 1
      src/video/SDL_sysvideo.h
  15. 0 3
      src/video/SDL_video.c
  16. 0 3
      src/video/SDL_vulkan_internal.h
  17. 0 412
      src/video/directfb/SDL_DirectFB_WM.c
  18. 0 56
      src/video/directfb/SDL_DirectFB_WM.h
  19. 0 117
      src/video/directfb/SDL_DirectFB_dyn.c
  20. 0 41
      src/video/directfb/SDL_DirectFB_dyn.h
  21. 0 739
      src/video/directfb/SDL_DirectFB_events.c
  22. 0 34
      src/video/directfb/SDL_DirectFB_events.h
  23. 0 414
      src/video/directfb/SDL_DirectFB_modes.c
  24. 0 59
      src/video/directfb/SDL_DirectFB_modes.h
  25. 0 388
      src/video/directfb/SDL_DirectFB_mouse.c
  26. 0 44
      src/video/directfb/SDL_DirectFB_mouse.h
  27. 0 332
      src/video/directfb/SDL_DirectFB_opengl.c
  28. 0 64
      src/video/directfb/SDL_DirectFB_opengl.h
  29. 0 1267
      src/video/directfb/SDL_DirectFB_render.c
  30. 0 25
      src/video/directfb/SDL_DirectFB_render.h
  31. 0 138
      src/video/directfb/SDL_DirectFB_shape.c
  32. 0 38
      src/video/directfb/SDL_DirectFB_shape.h
  33. 0 418
      src/video/directfb/SDL_DirectFB_video.c
  34. 0 165
      src/video/directfb/SDL_DirectFB_video.h
  35. 0 169
      src/video/directfb/SDL_DirectFB_vulkan.c
  36. 0 47
      src/video/directfb/SDL_DirectFB_vulkan.h
  37. 0 565
      src/video/directfb/SDL_DirectFB_window.c
  38. 0 83
      src/video/directfb/SDL_DirectFB_window.h

+ 0 - 3
CMakeLists.txt

@@ -448,8 +448,6 @@ set_option(SDL_ARMNEON             "use NEON assembly blitters on ARM" OFF)
 dep_option(SDL_DBUS                "Enable D-Bus support" ON ${UNIX_SYS} OFF)
 set_option(SDL_DISKAUDIO           "Support the disk writer audio driver" ON)
 set_option(SDL_DUMMYAUDIO          "Support the dummy audio driver" ON)
-set_option(SDL_DIRECTFB            "Use DirectFB video driver" OFF)
-dep_option(SDL_DIRECTFB_SHARED     "Dynamically load directfb support" ON "SDL_DIRECTFB" OFF)
 set_option(SDL_DUMMYVIDEO          "Use dummy video driver" ON)
 dep_option(SDL_IBUS                "Enable IBus support" ON ${UNIX_SYS} OFF)
 set_option(SDL_SYSTEM_ICONV        "Use iconv() from system-installed libraries" ON)
@@ -1409,7 +1407,6 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
     # Need to check for Raspberry PI first and add platform specific compiler flags, otherwise the test for GLES fails!
     CheckRPI()
     CheckX11()
-    CheckDirectFB()
     # Need to check for EGL first because KMSDRM and Wayland depends on it.
     CheckEGL()
     CheckKMSDRM()

+ 0 - 31
cmake/sdlchecks.cmake

@@ -559,37 +559,6 @@ macro(CheckCOCOA)
   endif()
 endmacro()
 
-# Requires:
-# - PkgCheckModules
-# Optional:
-# - DIRECTFB_SHARED opt
-# - HAVE_SDL_LOADSO opt
-macro(CheckDirectFB)
-  if(SDL_DIRECTFB)
-    pkg_check_modules(PKG_DIRECTFB directfb>=1.0.0)
-    if(PKG_DIRECTFB_FOUND)
-      set(HAVE_DIRECTFB TRUE)
-      file(GLOB DIRECTFB_SOURCES ${SDL3_SOURCE_DIR}/src/video/directfb/*.c)
-      list(APPEND SOURCE_FILES ${DIRECTFB_SOURCES})
-      set(SDL_VIDEO_DRIVER_DIRECTFB 1)
-      set(SDL_VIDEO_RENDER_DIRECTFB 1)
-      list(APPEND EXTRA_CFLAGS ${PKG_DIRECTFB_CFLAGS})
-      list(APPEND SDL_CFLAGS ${PKG_DIRECTFB_CFLAGS})
-      if(SDL_DIRECTFB_SHARED AND NOT HAVE_SDL_LOADSO)
-        message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading")
-      endif()
-      FindLibraryAndSONAME("directfb" LIBDIRS ${PKG_DIRECTFB_LIBRARY_DIRS})
-      if(SDL_DIRECTFB_SHARED AND DIRECTFB_LIB AND HAVE_SDL_LOADSO)
-        set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${DIRECTFB_LIB_SONAME}\"")
-        set(HAVE_DIRECTFB_SHARED TRUE)
-      else()
-        list(APPEND EXTRA_LDFLAGS ${PKG_DIRECTFB_LDFLAGS})
-      endif()
-      set(HAVE_SDL_VIDEO TRUE)
-    endif()
-  endif()
-endmacro()
-
 # Requires:
 # - n/a
 macro(CheckVivante)

+ 0 - 157
configure

@@ -695,8 +695,6 @@ LIBGBM_LIBS
 LIBGBM_CFLAGS
 LIBDRM_LIBS
 LIBDRM_CFLAGS
-DIRECTFB_LIBS
-DIRECTFB_CFLAGS
 X_EXTRA_LIBS
 X_LIBS
 X_PRE_LIBS
@@ -899,8 +897,6 @@ enable_video_vivante
 enable_video_cocoa
 enable_video_metal
 enable_render_metal
-enable_video_directfb
-enable_directfb_shared
 enable_video_kmsdrm
 enable_kmsdrm_shared
 enable_video_dummy
@@ -958,8 +954,6 @@ DECOR_LIBS
 RPI_CFLAGS
 RPI_LIBS
 XMKMF
-DIRECTFB_CFLAGS
-DIRECTFB_LIBS
 LIBDRM_CFLAGS
 LIBDRM_LIBS
 LIBGBM_CFLAGS
@@ -1689,9 +1683,6 @@ Optional Features:
   --enable-video-cocoa    use Cocoa video driver [default=yes]
   --enable-video-metal    include Metal support [default=yes]
   --enable-render-metal   enable the Metal render driver [default=yes]
-  --enable-video-directfb use DirectFB video driver [default=no]
-  --enable-directfb-shared
-                          dynamically load directfb support [default=yes]
   --enable-video-kmsdrm   use KMSDRM video driver [default=yes]
   --enable-kmsdrm-shared  dynamically load kmsdrm support [default=yes]
   --enable-video-dummy    use dummy video driver [default=yes]
@@ -1785,10 +1776,6 @@ Some influential environment variables:
   RPI_CFLAGS  C compiler flags for RPI, overriding pkg-config
   RPI_LIBS    linker flags for RPI, overriding pkg-config
   XMKMF       Path to xmkmf, Makefile generator for X Window System
-  DIRECTFB_CFLAGS
-              C compiler flags for DIRECTFB, overriding pkg-config
-  DIRECTFB_LIBS
-              linker flags for DIRECTFB, overriding pkg-config
   LIBDRM_CFLAGS
               C compiler flags for LIBDRM, overriding pkg-config
   LIBDRM_LIBS linker flags for LIBDRM, overriding pkg-config
@@ -24099,149 +24086,6 @@ printf "%s\n" "#define SDL_VIDEO_RENDER_METAL 1" >>confdefs.h
     fi
 }
 
-CheckDirectFB()
-{
-    # Check whether --enable-video-directfb was given.
-if test ${enable_video_directfb+y}
-then :
-  enableval=$enable_video_directfb;
-else $as_nop
-  enable_video_directfb=no
-fi
-
-    if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
-
-pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for directfb >= 1.0.0" >&5
-printf %s "checking for directfb >= 1.0.0... " >&6; }
-
-if test -n "$DIRECTFB_CFLAGS"; then
-    pkg_cv_DIRECTFB_CFLAGS="$DIRECTFB_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"directfb >= 1.0.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "directfb >= 1.0.0") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags "directfb >= 1.0.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$DIRECTFB_LIBS"; then
-    pkg_cv_DIRECTFB_LIBS="$DIRECTFB_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"directfb >= 1.0.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "directfb >= 1.0.0") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_DIRECTFB_LIBS=`$PKG_CONFIG --libs "directfb >= 1.0.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        DIRECTFB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "directfb >= 1.0.0" 2>&1`
-        else
-	        DIRECTFB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "directfb >= 1.0.0" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$DIRECTFB_PKG_ERRORS" >&5
-
-	video_directfb=no
-elif test $pkg_failed = untried; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-	video_directfb=no
-else
-	DIRECTFB_CFLAGS=$pkg_cv_DIRECTFB_CFLAGS
-	DIRECTFB_LIBS=$pkg_cv_DIRECTFB_LIBS
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-	video_directfb=yes
-fi
-
-        if test x$video_directfb = xyes; then
-            # SuSE 11.1 installs directfb-config without directfb-devel
-            save_CPPFLAGS="$CPPFLAGS"
-            CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
-            ac_fn_c_check_header_compile "$LINENO" "directfb.h" "ac_cv_header_directfb_h" "$ac_includes_default"
-if test "x$ac_cv_header_directfb_h" = xyes
-then :
-  have_directfb_hdr=yes
-else $as_nop
-  have_directfb_hdr=no
-fi
-
-            CPPFLAGS="$save_CPPFLAGS"
-            video_directfb=$have_directfb_hdr
-        fi
-
-        if test x$video_directfb = xyes; then
-            # Check whether --enable-directfb-shared was given.
-if test ${enable_directfb_shared+y}
-then :
-  enableval=$enable_directfb_shared;
-else $as_nop
-  enable_directfb_shared=yes
-fi
-
-
-
-printf "%s\n" "#define SDL_VIDEO_DRIVER_DIRECTFB 1" >>confdefs.h
-
-
-printf "%s\n" "#define SDL_VIDEO_RENDER_DIRECTFB 1" >>confdefs.h
-
-            SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
-
-            directfb_shared=no
-            directfb_lib=`find_lib "libdirectfb*.so.*" "$DIRECTFB_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`
-            if test x$have_loadso != xyes && \
-               test x$enable_directfb_shared = xyes; then
-                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic directfb loading" >&5
-printf "%s\n" "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic directfb loading" >&2;}
-            fi
-            if test x$have_loadso = xyes && \
-               test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
-                directfb_shared=yes
-                echo "-- dynamic libdirectfb -> $directfb_lib"
-
-printf "%s\n" "#define SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC \"$directfb_lib\"" >>confdefs.h
-
-                SUMMARY_video="${SUMMARY_video} directfb(dynamic)"
-            else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
-                SUMMARY_video="${SUMMARY_video} directfb"
-            fi
-            SDL_CFLAGS="$SDL_CFLAGS $DIRECTFB_CFLAGS"
-            have_video=yes
-        fi
-    fi
-}
-
 CheckKMSDRM()
 {
     # Check whether --enable-video-kmsdrm was given.
@@ -27220,7 +27064,6 @@ printf "%s\n" "#define SDL_VIDEO_DRIVER_ANDROID 1" >>confdefs.h
         # Need to check for Raspberry PI first and add platform specific compiler flags, otherwise the test for GLES fails!
         CheckRPI
         CheckX11
-        CheckDirectFB
         # Need to check for EGL first because KMSDRM and Wayland depends on it.
         CheckEGL
         CheckKMSDRM

+ 0 - 51
configure.ac

@@ -2019,56 +2019,6 @@ dnl     Work around that we don't have Objective-C support in autoconf
     fi
 }
 
-dnl Find DirectFB
-CheckDirectFB()
-{
-    AC_ARG_ENABLE(video-directfb,
-[AS_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [default=no]])],
-                  , enable_video_directfb=no)
-    if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
-        PKG_CHECK_MODULES([DIRECTFB], [directfb >= 1.0.0], video_directfb=yes, video_directfb=no)
-
-        if test x$video_directfb = xyes; then
-            # SuSE 11.1 installs directfb-config without directfb-devel
-            save_CPPFLAGS="$CPPFLAGS"
-            CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
-            AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
-            CPPFLAGS="$save_CPPFLAGS"
-            video_directfb=$have_directfb_hdr
-        fi
-
-        if test x$video_directfb = xyes; then
-            AC_ARG_ENABLE(directfb-shared,
-[AS_HELP_STRING([--enable-directfb-shared], [dynamically load directfb support [default=yes]])],
-                              , enable_directfb_shared=yes)
-
-            AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB, 1, [ ])
-            AC_DEFINE(SDL_VIDEO_RENDER_DIRECTFB, 1, [ ])
-            SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
-
-            directfb_shared=no
-            directfb_lib=[`find_lib "libdirectfb*.so.*" "$DIRECTFB_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
-            if test x$have_loadso != xyes && \
-               test x$enable_directfb_shared = xyes; then
-                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic directfb loading])
-            fi
-            if test x$have_loadso = xyes && \
-               test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
-                directfb_shared=yes
-                echo "-- dynamic libdirectfb -> $directfb_lib"
-                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ])
-                SUMMARY_video="${SUMMARY_video} directfb(dynamic)"
-            else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
-                SUMMARY_video="${SUMMARY_video} directfb"
-            fi
-            SDL_CFLAGS="$SDL_CFLAGS $DIRECTFB_CFLAGS"
-            have_video=yes
-        fi
-    fi
-}
-
 dnl Find KMSDRM
 CheckKMSDRM()
 {
@@ -3454,7 +3404,6 @@ case "$host" in
         # Need to check for Raspberry PI first and add platform specific compiler flags, otherwise the test for GLES fails!
         CheckRPI
         CheckX11
-        CheckDirectFB
         # Need to check for EGL first because KMSDRM and Wayland depends on it.
         CheckEGL
         CheckKMSDRM

+ 0 - 123
docs/README-directfb.md

@@ -1,123 +0,0 @@
-DirectFB
-========
-
-Supports:
-
-- Hardware YUV overlays
-- OpenGL - software only
-- 2D/3D accelerations (depends on directfb driver)
-- multiple displays
-- windows
-
-What you need:
-
-* DirectFB 1.0.1, 1.2.x, 1.3.0
-* Kernel-Framebuffer support: required: vesafb, radeonfb .... 
-* Mesa 7.0.x	   - optional for OpenGL
-
-The `/etc/directfbrc` file should contain the following lines to make
-your joystick work and avoid crashes:
-
-```
-disable-module=joystick
-disable-module=cle266
-disable-module=cyber5k
-no-linux-input-grab
-```
-
-To disable to use x11 backend when DISPLAY variable is found use
-
-```
-export SDL_DIRECTFB_X11_CHECK=0
-```
-
-To disable the use of linux input devices, i.e. multimice/multikeyboard support,
-use
-
-```
-export SDL_DIRECTFB_LINUX_INPUT=0
-```
-
-To use hardware accelerated YUV-overlays for YUV-textures, use:
-
-```
-export SDL_DIRECTFB_YUV_DIRECT=1
-```
-
-This is disabled by default. It will only support one 
-YUV texture, namely the first. Every other YUV texture will be
-rendered in software.
-
-In addition, you may use (directfb-1.2.x)
-
-```
-export SDL_DIRECTFB_YUV_UNDERLAY=1
-```
-
-to make the YUV texture an underlay. This will make the cursor to
-be shown.
-
-Simple Window Manager
-=====================
-
-The driver has support for a very, very basic window manager you may
-want to use when running with `wm=default`. Use
-
-```
-export SDL_DIRECTFB_WM=1
-```
-
-to enable basic window borders. In order to have the window title rendered,
-you need to have the following font installed:
-
-```
-/usr/share/fonts/truetype/freefont/FreeSans.ttf
-```
-
-OpenGL Support
-==============
-
-The following instructions will give you *software* OpenGL. However this
-works at least on all directfb supported platforms.
-
-As of this writing 20100802 you need to pull Mesa from git and do the following:
-
-```
-git clone git://anongit.freedesktop.org/git/mesa/mesa
-cd mesa 
-git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
-```
-
-Edit `configs/linux-directfb` so that the Directories-section looks like this:
-
-```
-# Directories
-SRC_DIRS     = mesa glu 
-GLU_DIRS     = sgi
-DRIVER_DIRS  = directfb
-PROGRAM_DIRS = 
-```
-
-Then do the following:
-
-```
-make linux-directfb
-make
-
-echo Installing - please enter sudo pw.
-
-sudo make install INSTALL_DIR=/usr/local/dfb_GL
-cd src/mesa/drivers/directfb
-make
-sudo make install INSTALL_DIR=/usr/local/dfb_GL
-```
-
-To run the SDL - testprograms:
-
-```
-export SDL_VIDEODRIVER=directfb
-export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
-export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
-
-./testgl
-```

+ 0 - 3
docs/README-linux.md

@@ -42,9 +42,6 @@ NOTES:
   for higher-quality audio resampling. SDL will work without it if the library
   is missing, so it's safe to build in support even if the end user doesn't
   have this library installed.
-- DirectFB isn't included because the configure script (currently) fails to find
-  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
-  configure script to include DirectFB support. Send patches.  :)
 
 
 Joystick does not work

+ 0 - 1
docs/README.md

@@ -25,7 +25,6 @@ More documentation and FAQs are available online at [the wiki](http://wiki.libsd
 
 - [Android](README-android.md)
 - [CMake](README-cmake.md)
-- [DirectFB](README-directfb.md)
 - [DynAPI](README-dynapi.md)
 - [Emscripten](README-emscripten.md)
 - [GDK](README-gdk.md)

+ 0 - 3
include/SDL_config.h.cmake

@@ -383,8 +383,6 @@
 #cmakedefine SDL_VIDEO_DRIVER_HAIKU @SDL_VIDEO_DRIVER_HAIKU@
 #cmakedefine SDL_VIDEO_DRIVER_COCOA @SDL_VIDEO_DRIVER_COCOA@
 #cmakedefine SDL_VIDEO_DRIVER_UIKIT @SDL_VIDEO_DRIVER_UIKIT@
-#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB @SDL_VIDEO_DRIVER_DIRECTFB@
-#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@
 #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
 #cmakedefine SDL_VIDEO_DRIVER_OFFSCREEN @SDL_VIDEO_DRIVER_OFFSCREEN@
 #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
@@ -435,7 +433,6 @@
 #cmakedefine SDL_VIDEO_RENDER_OGL @SDL_VIDEO_RENDER_OGL@
 #cmakedefine SDL_VIDEO_RENDER_OGL_ES @SDL_VIDEO_RENDER_OGL_ES@
 #cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
-#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
 #cmakedefine SDL_VIDEO_RENDER_METAL @SDL_VIDEO_RENDER_METAL@
 #cmakedefine SDL_VIDEO_RENDER_VITA_GXM @SDL_VIDEO_RENDER_VITA_GXM@
 #cmakedefine SDL_VIDEO_RENDER_PS2 @SDL_VIDEO_RENDER_PS2@

+ 0 - 3
include/SDL_config.h.in

@@ -349,8 +349,6 @@
 /* Enable various video drivers */
 #undef SDL_VIDEO_DRIVER_HAIKU
 #undef SDL_VIDEO_DRIVER_COCOA
-#undef SDL_VIDEO_DRIVER_DIRECTFB
-#undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
 #undef SDL_VIDEO_DRIVER_DUMMY
 #undef SDL_VIDEO_DRIVER_WINDOWS
 #undef SDL_VIDEO_DRIVER_WAYLAND
@@ -395,7 +393,6 @@
 #undef SDL_VIDEO_RENDER_OGL
 #undef SDL_VIDEO_RENDER_OGL_ES
 #undef SDL_VIDEO_RENDER_OGL_ES2
-#undef SDL_VIDEO_RENDER_DIRECTFB
 #undef SDL_VIDEO_RENDER_METAL
 
 /* Enable OpenGL support */

+ 0 - 18
include/SDL_syswm.h

@@ -76,10 +76,6 @@ struct SDL_SysWMinfo;
 
 #endif /* defined(SDL_VIDEO_DRIVER_X11) */
 
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-#include <directfb.h>
-#endif
-
 #if defined(SDL_VIDEO_DRIVER_COCOA)
 #ifdef __OBJC__
 @class NSWindow;
@@ -133,7 +129,6 @@ typedef enum
     SDL_SYSWM_UNKNOWN,
     SDL_SYSWM_WINDOWS,
     SDL_SYSWM_X11,
-    SDL_SYSWM_DIRECTFB,
     SDL_SYSWM_COCOA,
     SDL_SYSWM_UIKIT,
     SDL_SYSWM_WAYLAND,
@@ -167,11 +162,6 @@ struct SDL_SysWMmsg
             XEvent event;
         } x11;
 #endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct {
-            DFBEvent event;
-        } dfb;
-#endif
 #if defined(SDL_VIDEO_DRIVER_COCOA)
         struct
         {
@@ -234,14 +224,6 @@ struct SDL_SysWMinfo
             Window window;              /**< The X11 window */
         } x11;
 #endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct
-        {
-            IDirectFB *dfb;             /**< The directfb main interface */
-            IDirectFBWindow *window;    /**< The directfb window handle */
-            IDirectFBSurface *surface;  /**< The directfb client surface */
-        } dfb;
-#endif
 #if defined(SDL_VIDEO_DRIVER_COCOA)
         struct
         {

+ 2 - 2
src/events/SDL_scancode_tables.c

@@ -20,7 +20,7 @@
 */
 #include "../SDL_internal.h"
 
-#if SDL_INPUT_LINUXEV || SDL_VIDEO_DRIVER_DIRECTFB || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_X11
+#if SDL_INPUT_LINUXEV || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_X11
 
 #include "SDL_scancode_tables_c.h"
 
@@ -68,6 +68,6 @@ SDL_Scancode SDL_GetScancodeFromTable(SDL_ScancodeTable table, int keycode)
     return scancode;
 }
 
-#endif /* SDL_INPUT_LINUXEV || SDL_VIDEO_DRIVER_DIRECTFB || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_X11 */
+#endif /* SDL_INPUT_LINUXEV || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_X11 */
 
 /* vi: set ts=4 sw=4 expandtab: */

+ 0 - 15
src/render/SDL_render.c

@@ -112,9 +112,6 @@ static const SDL_RenderDriver *render_drivers[] = {
 #if SDL_VIDEO_RENDER_OGL_ES
     &GLES_RenderDriver,
 #endif
-#if SDL_VIDEO_RENDER_DIRECTFB
-    &DirectFB_RenderDriver,
-#endif
 #if SDL_VIDEO_RENDER_PS2 && !SDL_RENDER_DISABLED
     &PS2_RenderDriver,
 #endif
@@ -1481,18 +1478,6 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
         } else {
             SDL_UpdateTexture(texture, NULL, surface->pixels, surface->pitch);
         }
-
-#if SDL_VIDEO_RENDER_DIRECTFB
-        /* DirectFB allows palette format for textures.
-         * Copy SDL_Surface palette to the texture */
-        if (SDL_ISPIXELFORMAT_INDEXED(format)) {
-            if (SDL_strcasecmp(renderer->info.name, "directfb") == 0) {
-                extern void DirectFB_SetTexturePalette(SDL_Renderer *renderer, SDL_Texture *texture, SDL_Palette *pal);
-                DirectFB_SetTexturePalette(renderer, texture, surface->format->palette);
-            }
-        }
-#endif
-
     } else {
         SDL_PixelFormat *dst_fmt;
         SDL_Surface *temp = NULL;

+ 0 - 1
src/render/SDL_sysrender.h

@@ -300,7 +300,6 @@ extern SDL_RenderDriver D3D12_RenderDriver;
 extern SDL_RenderDriver GL_RenderDriver;
 extern SDL_RenderDriver GLES2_RenderDriver;
 extern SDL_RenderDriver GLES_RenderDriver;
-extern SDL_RenderDriver DirectFB_RenderDriver;
 extern SDL_RenderDriver METAL_RenderDriver;
 extern SDL_RenderDriver PS2_RenderDriver;
 extern SDL_RenderDriver PSP_RenderDriver;

+ 0 - 1
src/video/SDL_sysvideo.h

@@ -450,7 +450,6 @@ typedef struct VideoBootStrap
 /* Not all of these are available in a given build. Use #ifdefs, etc. */
 extern VideoBootStrap COCOA_bootstrap;
 extern VideoBootStrap X11_bootstrap;
-extern VideoBootStrap DirectFB_bootstrap;
 extern VideoBootStrap WINDOWS_bootstrap;
 extern VideoBootStrap WINRT_bootstrap;
 extern VideoBootStrap HAIKU_bootstrap;

+ 0 - 3
src/video/SDL_video.c

@@ -77,9 +77,6 @@ static VideoBootStrap *bootstrap[] = {
 #if SDL_VIDEO_DRIVER_VIVANTE
     &VIVANTE_bootstrap,
 #endif
-#if SDL_VIDEO_DRIVER_DIRECTFB
-    &DirectFB_bootstrap,
-#endif
 #if SDL_VIDEO_DRIVER_WINDOWS
     &WINDOWS_bootstrap,
 #endif

+ 0 - 3
src/video/SDL_vulkan_internal.h

@@ -37,9 +37,6 @@
 #define VK_USE_PLATFORM_METAL_EXT
 #define VK_USE_PLATFORM_MACOS_MVK
 #endif
-#if SDL_VIDEO_DRIVER_DIRECTFB
-#define VK_USE_PLATFORM_DIRECTFB_EXT
-#endif
 #if SDL_VIDEO_DRIVER_UIKIT
 #define VK_USE_PLATFORM_METAL_EXT
 #define VK_USE_PLATFORM_IOS_MVK

+ 0 - 412
src/video/directfb/SDL_DirectFB_WM.c

@@ -1,412 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_window.h"
-
-#include "../../events/SDL_windowevents_c.h"
-
-#define COLOR_EXPAND(col) col.r, col.g, col.b, col.a
-
-static DFB_Theme theme_std = {
-    4, 4, 8, 8,
-    {255, 200, 200, 200},
-    24,
-    {255, 0, 0, 255},
-    16,
-    {255, 255, 255, 255},
-    "/usr/share/fonts/truetype/freefont/FreeSans.ttf",
-    {255, 255, 0, 0},
-    {255, 255, 255, 0},
-};
-
-static DFB_Theme theme_none = {
-    0, 0, 0, 0,
-    {0, 0, 0, 0},
-    0,
-    {0, 0, 0, 0},
-    0,
-    {0, 0, 0, 0},
-    NULL
-};
-
-static void
-DrawTriangle(IDirectFBSurface * s, int down, int x, int y, int w)
-{
-    int x1, x2, x3;
-    int y1, y2, y3;
-
-    if (down) {
-        x1 = x + w / 2;
-        x2 = x;
-        x3 = x + w;
-        y1 = y + w;
-        y2 = y;
-        y3 = y;
-    } else {
-        x1 = x + w / 2;
-        x2 = x;
-        x3 = x + w;
-        y1 = y;
-        y2 = y + w;
-        y3 = y + w;
-    }
-    s->FillTriangle(s, x1, y1, x2, y2, x3, y3);
-}
-
-static void
-LoadFont(_THIS, SDL_Window * window)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(window);
-
-    if (windata->font != NULL) {
-        SDL_DFB_RELEASE(windata->font);
-        windata->font = NULL;
-        SDL_DFB_CHECK(windata->window_surface->SetFont(windata->window_surface, windata->font));
-    }
-
-    if (windata->theme.font != NULL)
-    {
-        DFBFontDescription fdesc;
-
-        SDL_zero(fdesc);
-        fdesc.flags = DFDESC_HEIGHT;
-        fdesc.height = windata->theme.font_size;
-        SDL_DFB_CHECK(devdata->
-                      dfb->CreateFont(devdata->dfb, windata->theme.font,
-                                      &fdesc, &windata->font));
-        SDL_DFB_CHECK(windata->window_surface->SetFont(windata->window_surface, windata->font));
-    }
-}
-
-static void
-DrawCraption(_THIS, IDirectFBSurface * s, int x, int y, char *text)
-{
-    DFBSurfaceTextFlags flags;
-
-    flags = DSTF_CENTER | DSTF_TOP;
-
-    s->DrawString(s, text, -1, x, y, flags);
-}
-
-void
-DirectFB_WM_RedrawLayout(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    IDirectFBSurface *s = windata->window_surface;
-    DFB_Theme *t = &windata->theme;
-    int i;
-    int d = (t->caption_size - t->font_size) / 2;
-    int x, y, w;
-
-
-    if (!windata->is_managed || (window->flags & SDL_WINDOW_FULLSCREEN))
-        return;
-
-    SDL_DFB_CHECK(s->SetSrcBlendFunction(s, DSBF_ONE));
-    SDL_DFB_CHECK(s->SetDstBlendFunction(s, DSBF_ZERO));
-    SDL_DFB_CHECK(s->SetDrawingFlags(s, DSDRAW_NOFX));
-    SDL_DFB_CHECK(s->SetBlittingFlags(s, DSBLIT_NOFX));
-
-    LoadFont(_this, window);
-    /* s->SetDrawingFlags(s, DSDRAW_BLEND); */
-    s->SetColor(s, COLOR_EXPAND(t->frame_color));
-    /* top */
-    for (i = 0; i < t->top_size; i++)
-        s->DrawLine(s, 0, i, windata->size.w, i);
-    /* bottom */
-    for (i = windata->size.h - t->bottom_size; i < windata->size.h; i++)
-        s->DrawLine(s, 0, i, windata->size.w, i);
-    /* left */
-    for (i = 0; i < t->left_size; i++)
-        s->DrawLine(s, i, 0, i, windata->size.h);
-    /* right */
-    for (i = windata->size.w - t->right_size; i < windata->size.w; i++)
-        s->DrawLine(s, i, 0, i, windata->size.h);
-    /* Caption */
-    s->SetColor(s, COLOR_EXPAND(t->caption_color));
-    s->FillRectangle(s, t->left_size, t->top_size, windata->client.w,
-                     t->caption_size);
-    /* Close Button */
-    w = t->caption_size;
-    x = windata->size.w - t->right_size - w + d;
-    y = t->top_size + d;
-    s->SetColor(s, COLOR_EXPAND(t->close_color));
-    DrawTriangle(s, 1, x, y, w - 2 * d);
-    /* Max Button */
-    s->SetColor(s, COLOR_EXPAND(t->max_color));
-    DrawTriangle(s, window->flags & SDL_WINDOW_MAXIMIZED ? 1 : 0, x - w,
-               y, w - 2 * d);
-
-    /* Caption */
-    if (*window->title) {
-        s->SetColor(s, COLOR_EXPAND(t->font_color));
-        DrawCraption(_this, s, (x - w) / 2, t->top_size + d, window->title);
-    }
-    /* Icon */
-    if (windata->icon) {
-        DFBRectangle dr;
-
-        dr.x = t->left_size + d;
-        dr.y = t->top_size + d;
-        dr.w = w - 2 * d;
-        dr.h = w - 2 * d;
-        s->SetBlittingFlags(s, DSBLIT_BLEND_ALPHACHANNEL);
-
-        s->StretchBlit(s, windata->icon, NULL, &dr);
-    }
-    windata->wm_needs_redraw = 0;
-}
-
-DFBResult
-DirectFB_WM_GetClientSize(_THIS, SDL_Window * window, int *cw, int *ch)
-{
-    SDL_DFB_WINDOWDATA(window);
-    IDirectFBWindow *dfbwin = windata->dfbwin;
-
-    SDL_DFB_CHECK(dfbwin->GetSize(dfbwin, cw, ch));
-    dfbwin->GetSize(dfbwin, cw, ch);
-    *cw -= windata->theme.left_size + windata->theme.right_size;
-    *ch -=
-        windata->theme.top_size + windata->theme.caption_size +
-        windata->theme.bottom_size;
-    return DFB_OK;
-}
-
-void
-DirectFB_WM_AdjustWindowLayout(SDL_Window * window, int flags, int w, int h)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    if (!windata->is_managed)
-        windata->theme = theme_none;
-    else if (flags & SDL_WINDOW_BORDERLESS)
-        /* desc.caps |= DWCAPS_NODECORATION;) */
-        windata->theme = theme_none;
-    else if (flags & SDL_WINDOW_FULLSCREEN) {
-        windata->theme = theme_none;
-    } else if (flags & SDL_WINDOW_MAXIMIZED) {
-        windata->theme = theme_std;
-        windata->theme.left_size = 0;
-        windata->theme.right_size = 0;
-        windata->theme.top_size = 0;
-        windata->theme.bottom_size = 0;
-    } else {
-        windata->theme = theme_std;
-    }
-
-    windata->client.x = windata->theme.left_size;
-    windata->client.y = windata->theme.top_size + windata->theme.caption_size;
-    windata->client.w = w;
-    windata->client.h = h;
-    windata->size.w =
-        w + windata->theme.left_size + windata->theme.right_size;
-    windata->size.h =
-        h + windata->theme.top_size +
-        windata->theme.caption_size + windata->theme.bottom_size;
-}
-
-
-enum
-{
-    WM_POS_NONE = 0x00,
-    WM_POS_CAPTION = 0x01,
-    WM_POS_CLOSE = 0x02,
-    WM_POS_MAX = 0x04,
-    WM_POS_LEFT = 0x08,
-    WM_POS_RIGHT = 0x10,
-    WM_POS_TOP = 0x20,
-    WM_POS_BOTTOM = 0x40,
-};
-
-static int
-WMIsClient(DFB_WindowData * p, int x, int y)
-{
-    x -= p->client.x;
-    y -= p->client.y;
-    if (x < 0 || y < 0)
-        return 0;
-    if (x >= p->client.w || y >= p->client.h)
-        return 0;
-    return 1;
-}
-
-static int
-WMPos(DFB_WindowData * p, int x, int y)
-{
-    int pos = WM_POS_NONE;
-
-    if (!WMIsClient(p, x, y)) {
-        if (y < p->theme.top_size) {
-            pos |= WM_POS_TOP;
-        } else if (y < p->client.y) {
-            if (x <
-                p->size.w - p->theme.right_size - 2 * p->theme.caption_size) {
-                pos |= WM_POS_CAPTION;
-            } else if (x <
-                       p->size.w - p->theme.right_size -
-                       p->theme.caption_size) {
-                pos |= WM_POS_MAX;
-            } else {
-                pos |= WM_POS_CLOSE;
-            }
-        } else if (y >= p->size.h - p->theme.bottom_size) {
-            pos |= WM_POS_BOTTOM;
-        }
-        if (x < p->theme.left_size) {
-            pos |= WM_POS_LEFT;
-        } else if (x >= p->size.w - p->theme.right_size) {
-            pos |= WM_POS_RIGHT;
-        }
-    }
-    return pos;
-}
-
-int
-DirectFB_WM_ProcessEvent(_THIS, SDL_Window * window, DFBWindowEvent * evt)
-{
-    SDL_DFB_WINDOWDATA(window);
-    SDL_Window *grabbed_window = SDL_GetGrabbedWindow();
-    IDirectFBWindow *dfbwin = windata->dfbwin;
-    DFBWindowOptions wopts;
-
-    if (!windata->is_managed)
-        return 0;
-
-    SDL_DFB_CHECK(dfbwin->GetOptions(dfbwin, &wopts));
-
-    switch (evt->type) {
-    case DWET_BUTTONDOWN:
-        if (evt->buttons & DIBM_LEFT) {
-            int pos = WMPos(windata, evt->x, evt->y);
-            switch (pos) {
-            case WM_POS_NONE:
-                return 0;
-            case WM_POS_CLOSE:
-                windata->wm_grab = WM_POS_NONE;
-                SDL_SendWindowEvent(window, SDL_WINDOWEVENT_CLOSE, 0,
-                                    0);
-                return 1;
-            case WM_POS_MAX:
-                windata->wm_grab = WM_POS_NONE;
-                if (window->flags & SDL_WINDOW_MAXIMIZED) {
-                    SDL_RestoreWindow(window);
-                } else {
-                    SDL_MaximizeWindow(window);
-                }
-                return 1;
-            case WM_POS_CAPTION:
-                if (!(wopts & DWOP_KEEP_STACKING)) {
-                    DirectFB_RaiseWindow(_this, window);
-                }
-                if (window->flags & SDL_WINDOW_MAXIMIZED)
-                    return 1;
-                SDL_FALLTHROUGH;
-            default:
-                windata->wm_grab = pos;
-                if (grabbed_window != NULL)
-                    DirectFB_SetWindowMouseGrab(_this, grabbed_window, SDL_FALSE);
-                DirectFB_SetWindowMouseGrab(_this, window, SDL_TRUE);
-                windata->wm_lastx = evt->cx;
-                windata->wm_lasty = evt->cy;
-            }
-        }
-        return 1;
-    case DWET_BUTTONUP:
-        if (!windata->wm_grab)
-            return 0;
-        if (!(evt->buttons & DIBM_LEFT)) {
-            if (windata->wm_grab & (WM_POS_RIGHT | WM_POS_BOTTOM)) {
-                int dx = evt->cx - windata->wm_lastx;
-                int dy = evt->cy - windata->wm_lasty;
-
-                if (!(wopts & DWOP_KEEP_SIZE)) {
-                    int cw, ch;
-                    if ((windata->wm_grab & (WM_POS_BOTTOM | WM_POS_RIGHT)) == WM_POS_BOTTOM)
-                        dx = 0;
-                    else if ((windata->wm_grab & (WM_POS_BOTTOM | WM_POS_RIGHT)) == WM_POS_RIGHT)
-                        dy = 0;
-                    SDL_DFB_CHECK(dfbwin->GetSize(dfbwin, &cw, &ch));
-
-                    /* necessary to trigger an event - ugly */
-                    SDL_DFB_CHECK(dfbwin->DisableEvents(dfbwin, DWET_ALL));
-                    SDL_DFB_CHECK(dfbwin->Resize(dfbwin, cw + dx + 1, ch + dy));
-                    SDL_DFB_CHECK(dfbwin->EnableEvents(dfbwin, DWET_ALL));
-
-                    SDL_DFB_CHECK(dfbwin->Resize(dfbwin, cw + dx, ch + dy));
-                }
-            }
-            DirectFB_SetWindowMouseGrab(_this, window, SDL_FALSE);
-            if (grabbed_window != NULL)
-                DirectFB_SetWindowMouseGrab(_this, grabbed_window, SDL_TRUE);
-            windata->wm_grab = WM_POS_NONE;
-            return 1;
-        }
-        break;
-    case DWET_MOTION:
-        if (!windata->wm_grab)
-            return 0;
-        if (evt->buttons & DIBM_LEFT) {
-            int dx = evt->cx - windata->wm_lastx;
-            int dy = evt->cy - windata->wm_lasty;
-
-            if (windata->wm_grab & WM_POS_CAPTION) {
-                if (!(wopts & DWOP_KEEP_POSITION))
-                    SDL_DFB_CHECK(dfbwin->Move(dfbwin, dx, dy));
-            }
-            if (windata->wm_grab & (WM_POS_RIGHT | WM_POS_BOTTOM)) {
-                if (!(wopts & DWOP_KEEP_SIZE)) {
-                    int cw, ch;
-
-                    /* Make sure all events are disabled for this operation ! */
-                    SDL_DFB_CHECK(dfbwin->DisableEvents(dfbwin, DWET_ALL));
-
-                    if ((windata->wm_grab & (WM_POS_BOTTOM | WM_POS_RIGHT)) == WM_POS_BOTTOM)
-                        dx = 0;
-                    else if ((windata->wm_grab & (WM_POS_BOTTOM | WM_POS_RIGHT)) == WM_POS_RIGHT)
-                        dy = 0;
-
-                    SDL_DFB_CHECK(dfbwin->GetSize(dfbwin, &cw, &ch));
-                    SDL_DFB_CHECK(dfbwin->Resize(dfbwin, cw + dx, ch + dy));
-
-                    SDL_DFB_CHECK(dfbwin->EnableEvents(dfbwin, DWET_ALL));
-                }
-            }
-            windata->wm_lastx = evt->cx;
-            windata->wm_lasty = evt->cy;
-            return 1;
-        }
-        break;
-    case DWET_KEYDOWN:
-        break;
-    case DWET_KEYUP:
-        break;
-    default:
-        ;
-    }
-    return 0;
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 56
src/video/directfb/SDL_DirectFB_WM.h

@@ -1,56 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_directfb_wm_h_
-#define SDL_directfb_wm_h_
-
-#include "SDL_DirectFB_video.h"
-
-typedef struct _DFB_Theme DFB_Theme;
-struct _DFB_Theme
-{
-    int left_size;
-    int right_size;
-    int top_size;
-    int bottom_size;
-    DFBColor frame_color;
-    int caption_size;
-    DFBColor caption_color;
-    int font_size;
-    DFBColor font_color;
-    char *font;
-    DFBColor close_color;
-    DFBColor max_color;
-};
-
-extern void DirectFB_WM_AdjustWindowLayout(SDL_Window * window, int flags, int w, int h);
-extern void DirectFB_WM_RedrawLayout(_THIS, SDL_Window * window);
-
-extern int DirectFB_WM_ProcessEvent(_THIS, SDL_Window * window,
-                                    DFBWindowEvent * evt);
-
-extern DFBResult DirectFB_WM_GetClientSize(_THIS, SDL_Window * window,
-                                           int *cw, int *ch);
-
-
-#endif /* SDL_directfb_wm_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 117
src/video/directfb/SDL_DirectFB_dyn.c

@@ -1,117 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_dyn.h"
-
-#ifdef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
-#include "SDL_name.h"
-#include "SDL_loadso.h"
-
-#define DFB_SYM(ret, name, args, al, func) ret (*name) args;
-static struct _SDL_DirectFB_Symbols
-{
-    DFB_SYMS
-    const unsigned int *directfb_major_version;
-    const unsigned int *directfb_minor_version;
-    const unsigned int *directfb_micro_version;
-} SDL_DirectFB_Symbols;
-#undef DFB_SYM
-
-#define DFB_SYM(ret, name, args, al, func) ret name args { func SDL_DirectFB_Symbols.name al  ; }
-DFB_SYMS
-#undef DFB_SYM
-
-static void *handle = NULL;
-
-int
-SDL_DirectFB_LoadLibrary(void)
-{
-    int retval = 0;
-
-    if (handle == NULL) {
-        handle = SDL_LoadObject(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC);
-        if (handle != NULL) {
-            retval = 1;
-#define DFB_SYM(ret, name, args, al, func) if (!(SDL_DirectFB_Symbols.name = SDL_LoadFunction(handle, # name))) retval = 0;
-            DFB_SYMS
-#undef DFB_SYM
-            if (!
-                    (SDL_DirectFB_Symbols.directfb_major_version =
-                     SDL_LoadFunction(handle, "directfb_major_version")))
-                retval = 0;
-            if (!
-                (SDL_DirectFB_Symbols.directfb_minor_version =
-                 SDL_LoadFunction(handle, "directfb_minor_version")))
-                retval = 0;
-            if (!
-                (SDL_DirectFB_Symbols.directfb_micro_version =
-                 SDL_LoadFunction(handle, "directfb_micro_version")))
-                retval = 0;
-        }
-    }
-    if (retval) {
-        const char *stemp = DirectFBCheckVersion(DIRECTFB_MAJOR_VERSION,
-                                                 DIRECTFB_MINOR_VERSION,
-                                                 DIRECTFB_MICRO_VERSION);
-        /* Version Check */
-        if (stemp != NULL) {
-            fprintf(stderr,
-                    "DirectFB Lib: Version mismatch. Compiled: %d.%d.%d Library %d.%d.%d\n",
-                    DIRECTFB_MAJOR_VERSION, DIRECTFB_MINOR_VERSION,
-                    DIRECTFB_MICRO_VERSION,
-                    *SDL_DirectFB_Symbols.directfb_major_version,
-                    *SDL_DirectFB_Symbols.directfb_minor_version,
-                    *SDL_DirectFB_Symbols.directfb_micro_version);
-            retval = 0;
-        }
-    }
-    if (!retval)
-        SDL_DirectFB_UnLoadLibrary();
-    return retval;
-}
-
-void
-SDL_DirectFB_UnLoadLibrary(void)
-{
-    if (handle != NULL) {
-        SDL_UnloadObject(handle);
-        handle = NULL;
-    }
-}
-
-#else
-int
-SDL_DirectFB_LoadLibrary(void)
-{
-    return 1;
-}
-
-void
-SDL_DirectFB_UnLoadLibrary(void)
-{
-}
-#endif
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 41
src/video/directfb/SDL_DirectFB_dyn.h

@@ -1,41 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_DirectFB_dyn_h_
-#define SDL_DirectFB_dyn_h_
-
-#define DFB_SYMS \
-    DFB_SYM(DFBResult, DirectFBError, (const char *msg, DFBResult result), (msg, result), return) \
-    DFB_SYM(DFBResult, DirectFBErrorFatal, (const char *msg, DFBResult result), (msg, result), return) \
-    DFB_SYM(const char *, DirectFBErrorString, (DFBResult result), (result), return) \
-    DFB_SYM(const char *, DirectFBUsageString, ( void ), (), return) \
-    DFB_SYM(DFBResult, DirectFBInit, (int *argc, char *(*argv[]) ), (argc, argv), return) \
-    DFB_SYM(DFBResult, DirectFBSetOption, (const char *name, const char *value), (name, value), return) \
-    DFB_SYM(DFBResult, DirectFBCreate, (IDirectFB **interface), (interface), return) \
-    DFB_SYM(const char *, DirectFBCheckVersion, (unsigned int required_major, unsigned int required_minor, unsigned int required_micro), \
-                (required_major, required_minor, required_micro), return)
-
-int SDL_DirectFB_LoadLibrary(void);
-void SDL_DirectFB_UnLoadLibrary(void);
-
-#endif /* SDL_DirectFB_dyn_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 739
src/video/directfb/SDL_DirectFB_events.c

@@ -1,739 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-/* Handle the event stream, converting DirectFB input events into SDL events */
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_window.h"
-#include "SDL_DirectFB_modes.h"
-
-#include "SDL_syswm.h"
-
-#include "../../events/SDL_mouse_c.h"
-#include "../../events/SDL_keyboard_c.h"
-#include "../../events/SDL_windowevents_c.h"
-#include "../../events/SDL_events_c.h"
-#include "../../events/SDL_scancode_tables_c.h"
-
-#include "SDL_DirectFB_events.h"
-
-#if USE_MULTI_API
-#define SDL_SendMouseMotion_ex(w, id, relative, x, y, p) SDL_SendMouseMotion(w, id, relative, x, y, p)
-#define SDL_SendMouseButton_ex(w, id, state, button) SDL_SendMouseButton(w, id, state, button)
-#define SDL_SendKeyboardKey_ex(id, state, scancode) SDL_SendKeyboardKey(id, state, scancode)
-#define SDL_SendKeyboardText_ex(id, text) SDL_SendKeyboardText(id, text)
-#else
-#define SDL_SendMouseMotion_ex(w, id, relative, x, y, p) SDL_SendMouseMotion(w, id, relative, x, y)
-#define SDL_SendMouseButton_ex(w, id, state, button) SDL_SendMouseButton(w, id, state, button)
-#define SDL_SendKeyboardKey_ex(id, state, scancode) SDL_SendKeyboardKey(state, scancode)
-#define SDL_SendKeyboardText_ex(id, text) SDL_SendKeyboardText(text)
-#endif
-
-typedef struct _cb_data cb_data;
-struct _cb_data
-{
-    DFB_DeviceData *devdata;
-    int sys_ids;
-    int sys_kbd;
-};
-
-/* The translation tables from a DirectFB keycode to a SDL keysym */
-static SDL_Scancode oskeymap[256];
-
-
-static SDL_Keysym *DirectFB_TranslateKey(_THIS, DFBWindowEvent * evt,
-                                         SDL_Keysym * keysym, Uint32 *unicode);
-static SDL_Keysym *DirectFB_TranslateKeyInputEvent(_THIS, DFBInputEvent * evt,
-                                                   SDL_Keysym * keysym, Uint32 *unicode);
-
-static void DirectFB_InitOSKeymap(_THIS, SDL_Scancode * keypmap, int numkeys);
-static int DirectFB_TranslateButton(DFBInputDeviceButtonIdentifier button);
-
-static void UnicodeToUtf8( Uint16 w , char *utf8buf)
-{
-        unsigned char *utf8s = (unsigned char *) utf8buf;
-
-    if ( w < 0x0080 ) {
-        utf8s[0] = ( unsigned char ) w;
-        utf8s[1] = 0;
-    }
-    else if ( w < 0x0800 ) {
-        utf8s[0] = 0xc0 | (( w ) >> 6 );
-        utf8s[1] = 0x80 | (( w ) & 0x3f );
-        utf8s[2] = 0;
-    }
-    else {
-        utf8s[0] = 0xe0 | (( w ) >> 12 );
-        utf8s[1] = 0x80 | (( ( w ) >> 6 ) & 0x3f );
-        utf8s[2] = 0x80 | (( w ) & 0x3f );
-        utf8s[3] = 0;
-    }
-}
-
-static void
-FocusAllMice(_THIS, SDL_Window *window)
-{
-#if USE_MULTI_API
-    SDL_DFB_DEVICEDATA(_this);
-    int index;
-
-    for (index = 0; index < devdata->num_mice; index++)
-        SDL_SetMouseFocus(devdata->mouse_id[index], id);
-#else
-    SDL_SetMouseFocus(window);
-#endif
-}
-
-
-static void
-FocusAllKeyboards(_THIS, SDL_Window *window)
-{
-#if USE_MULTI_API
-    SDL_DFB_DEVICEDATA(_this);
-    int index;
-
-    for (index = 0; index < devdata->num_keyboard; index++)
-        SDL_SetKeyboardFocus(index, id);
-#else
-    SDL_SetKeyboardFocus(window);
-#endif
-}
-
-static void
-MotionAllMice(_THIS, int x, int y)
-{
-#if USE_MULTI_API
-    SDL_DFB_DEVICEDATA(_this);
-    int index;
-
-    for (index = 0; index < devdata->num_mice; index++) {
-        SDL_Mouse *mouse = SDL_GetMouse(index);
-        mouse->x = mouse->last_x = x;
-        mouse->y = mouse->last_y = y;
-        /* SDL_SendMouseMotion(devdata->mouse_id[index], 0, x, y, 0); */
-    }
-#endif
-}
-
-static int
-KbdIndex(_THIS, int id)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    int index;
-
-    for (index = 0; index < devdata->num_keyboard; index++) {
-        if (devdata->keyboard[index].id == id)
-            return index;
-    }
-    return -1;
-}
-
-static int
-ClientXY(DFB_WindowData * p, int *x, int *y)
-{
-    int cx, cy;
-
-    cx = *x;
-    cy = *y;
-
-    cx -= p->client.x;
-    cy -= p->client.y;
-
-    if (cx < 0 || cy < 0)
-        return 0;
-    if (cx >= p->client.w || cy >= p->client.h)
-        return 0;
-    *x = cx;
-    *y = cy;
-    return 1;
-}
-
-static void
-ProcessWindowEvent(_THIS, SDL_Window *sdlwin, DFBWindowEvent * evt)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(sdlwin);
-    SDL_Keysym keysym;
-    Uint32 unicode;
-    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];
-
-    if (evt->clazz == DFEC_WINDOW) {
-        switch (evt->type) {
-        case DWET_BUTTONDOWN:
-            if (ClientXY(windata, &evt->x, &evt->y)) {
-                if (!devdata->use_linux_input) {
-                    SDL_SendMouseMotion_ex(sdlwin, devdata->mouse_id[0], 0, evt->x,
-                                        evt->y, 0);
-                    SDL_SendMouseButton_ex(sdlwin, devdata->mouse_id[0],
-                                        SDL_PRESSED,
-                                        DirectFB_TranslateButton
-                                        (evt->button));
-                } else {
-                    MotionAllMice(_this, evt->x, evt->y);
-                }
-            }
-            break;
-        case DWET_BUTTONUP:
-            if (ClientXY(windata, &evt->x, &evt->y)) {
-                if (!devdata->use_linux_input) {
-                    SDL_SendMouseMotion_ex(sdlwin, devdata->mouse_id[0], 0, evt->x,
-                                        evt->y, 0);
-                    SDL_SendMouseButton_ex(sdlwin, devdata->mouse_id[0],
-                                        SDL_RELEASED,
-                                        DirectFB_TranslateButton
-                                        (evt->button));
-                } else {
-                    MotionAllMice(_this, evt->x, evt->y);
-                }
-            }
-            break;
-        case DWET_MOTION:
-            if (ClientXY(windata, &evt->x, &evt->y)) {
-                if (!devdata->use_linux_input) {
-                    if (!(sdlwin->flags & SDL_WINDOW_MOUSE_GRABBED))
-                        SDL_SendMouseMotion_ex(sdlwin, devdata->mouse_id[0], 0,
-                                            evt->x, evt->y, 0);
-                } else {
-                    /* relative movements are not exact!
-                     * This code should limit the number of events sent.
-                     * However it kills MAME axis recognition ... */
-                    static int cnt = 0;
-                    if (1 && ++cnt > 20) {
-                        MotionAllMice(_this, evt->x, evt->y);
-                        cnt = 0;
-                    }
-                }
-                if (!(sdlwin->flags & SDL_WINDOW_MOUSE_FOCUS))
-                    SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_ENTER, 0,
-                                        0);
-            }
-            break;
-        case DWET_KEYDOWN:
-            if (!devdata->use_linux_input) {
-                DirectFB_TranslateKey(_this, evt, &keysym, &unicode);
-                /* printf("Scancode %d  %d %d\n", keysym.scancode, evt->key_code, evt->key_id); */
-                SDL_SendKeyboardKey_ex(0, SDL_PRESSED, keysym.scancode);
-                if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) {
-                    SDL_zeroa(text);
-                    UnicodeToUtf8(unicode, text);
-                    if (*text) {
-                        SDL_SendKeyboardText_ex(0, text);
-                    }
-                }
-            }
-            break;
-        case DWET_KEYUP:
-            if (!devdata->use_linux_input) {
-                DirectFB_TranslateKey(_this, evt, &keysym, &unicode);
-                SDL_SendKeyboardKey_ex(0, SDL_RELEASED, keysym.scancode);
-            }
-            break;
-        case DWET_POSITION:
-            if (ClientXY(windata, &evt->x, &evt->y)) {
-                SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_MOVED,
-                                    evt->x, evt->y);
-            }
-            break;
-        case DWET_POSITION_SIZE:
-            if (ClientXY(windata, &evt->x, &evt->y)) {
-                SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_MOVED,
-                                    evt->x, evt->y);
-            }
-            SDL_FALLTHROUGH;
-        case DWET_SIZE:
-            /* FIXME: what about < 0 */
-            evt->w -= (windata->theme.right_size + windata->theme.left_size);
-            evt->h -=
-                (windata->theme.top_size + windata->theme.bottom_size +
-                 windata->theme.caption_size);
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_RESIZED,
-                                evt->w, evt->h);
-            break;
-        case DWET_CLOSE:
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_CLOSE, 0, 0);
-            break;
-        case DWET_GOTFOCUS:
-            DirectFB_SetContext(_this, sdlwin);
-            FocusAllKeyboards(_this, sdlwin);
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_FOCUS_GAINED,
-                                0, 0);
-            break;
-        case DWET_LOSTFOCUS:
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
-            FocusAllKeyboards(_this, 0);
-            break;
-        case DWET_ENTER:
-            /* SDL_DirectFB_ReshowCursor(_this, 0); */
-            FocusAllMice(_this, sdlwin);
-            /* FIXME: when do we really enter ? */
-            if (ClientXY(windata, &evt->x, &evt->y))
-                MotionAllMice(_this, evt->x, evt->y);
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_ENTER, 0, 0);
-            break;
-        case DWET_LEAVE:
-            SDL_SendWindowEvent(sdlwin, SDL_WINDOWEVENT_LEAVE, 0, 0);
-            FocusAllMice(_this, 0);
-            /* SDL_DirectFB_ReshowCursor(_this, 1); */
-            break;
-        default:
-            ;
-        }
-    } else
-        printf("Event Clazz %d\n", evt->clazz);
-}
-
-static void
-ProcessInputEvent(_THIS, DFBInputEvent * ievt)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_Keysym keysym;
-    int kbd_idx;
-    Uint32 unicode;
-    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];
-    SDL_Window* grabbed_window = SDL_GetGrabbedWindow();
-
-    if (!devdata->use_linux_input) {
-        if (ievt->type == DIET_AXISMOTION) {
-            if ((grabbed_window != NULL) && (ievt->flags & DIEF_AXISREL)) {
-                if (ievt->axis == DIAI_X)
-                    SDL_SendMouseMotion_ex(grabbed_window, ievt->device_id, 1,
-                                        ievt->axisrel, 0, 0);
-                else if (ievt->axis == DIAI_Y)
-                    SDL_SendMouseMotion_ex(grabbed_window, ievt->device_id, 1, 0,
-                                        ievt->axisrel, 0);
-            }
-        }
-    } else {
-        static int last_x, last_y;
-
-        switch (ievt->type) {
-        case DIET_AXISMOTION:
-            if (ievt->flags & DIEF_AXISABS) {
-                if (ievt->axis == DIAI_X)
-                    last_x = ievt->axisabs;
-                else if (ievt->axis == DIAI_Y)
-                    last_y = ievt->axisabs;
-                if (!(ievt->flags & DIEF_FOLLOW)) {
-#if USE_MULTI_API
-                    SDL_Mouse *mouse = SDL_GetMouse(ievt->device_id);
-                    SDL_Window *window = SDL_GetWindowFromID(mouse->focus);
-#else
-                    SDL_Window *window = grabbed_window;
-#endif
-                    if (window) {
-                        DFB_WindowData *windata =
-                            (DFB_WindowData *) window->driverdata;
-                        int x, y;
-
-                        windata->dfbwin->GetPosition(windata->dfbwin, &x, &y);
-                        SDL_SendMouseMotion_ex(window, ievt->device_id, 0,
-                                            last_x - (x +
-                                                      windata->client.x),
-                                            last_y - (y +
-                                                      windata->client.y), 0);
-                    } else {
-                        SDL_SendMouseMotion_ex(window, ievt->device_id, 0, last_x,
-                                            last_y, 0);
-                    }
-                }
-            } else if (ievt->flags & DIEF_AXISREL) {
-                if (ievt->axis == DIAI_X)
-                    SDL_SendMouseMotion_ex(grabbed_window, ievt->device_id, 1,
-                                        ievt->axisrel, 0, 0);
-                else if (ievt->axis == DIAI_Y)
-                    SDL_SendMouseMotion_ex(grabbed_window, ievt->device_id, 1, 0,
-                                        ievt->axisrel, 0);
-            }
-            break;
-        case DIET_KEYPRESS:
-            kbd_idx = KbdIndex(_this, ievt->device_id);
-            DirectFB_TranslateKeyInputEvent(_this, ievt, &keysym, &unicode);
-            /* printf("Scancode %d  %d %d\n", keysym.scancode, evt->key_code, evt->key_id); */
-            SDL_SendKeyboardKey_ex(kbd_idx, SDL_PRESSED, keysym.scancode);
-            if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) {
-                SDL_zeroa(text);
-                UnicodeToUtf8(unicode, text);
-                if (*text) {
-                    SDL_SendKeyboardText_ex(kbd_idx, text);
-                }
-            }
-            break;
-        case DIET_KEYRELEASE:
-            kbd_idx = KbdIndex(_this, ievt->device_id);
-            DirectFB_TranslateKeyInputEvent(_this, ievt, &keysym, &unicode);
-            SDL_SendKeyboardKey_ex(kbd_idx, SDL_RELEASED, keysym.scancode);
-            break;
-        case DIET_BUTTONPRESS:
-            if (ievt->buttons & DIBM_LEFT)
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_PRESSED, 1);
-            if (ievt->buttons & DIBM_MIDDLE)
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_PRESSED, 2);
-            if (ievt->buttons & DIBM_RIGHT)
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_PRESSED, 3);
-            break;
-        case DIET_BUTTONRELEASE:
-            if (!(ievt->buttons & DIBM_LEFT))
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_RELEASED, 1);
-            if (!(ievt->buttons & DIBM_MIDDLE))
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_RELEASED, 2);
-            if (!(ievt->buttons & DIBM_RIGHT))
-                SDL_SendMouseButton_ex(grabbed_window, ievt->device_id, SDL_RELEASED, 3);
-            break;
-        default:
-            break;              /* please gcc */
-        }
-    }
-}
-
-void
-DirectFB_PumpEventsWindow(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    DFBInputEvent ievt;
-    SDL_Window *w;
-
-    for (w = devdata->firstwin; w != NULL; w = w->next) {
-        SDL_DFB_WINDOWDATA(w);
-        DFBWindowEvent evt;
-
-        while (windata->eventbuffer->GetEvent(windata->eventbuffer,
-                                        DFB_EVENT(&evt)) == DFB_OK) {
-            if (!DirectFB_WM_ProcessEvent(_this, w, &evt)) {
-                /* Send a SDL_SYSWMEVENT if the application wants them */
-                if (SDL_GetEventState(SDL_SYSWMEVENT) == SDL_ENABLE) {
-                    SDL_SysWMmsg wmmsg;
-                    SDL_VERSION(&wmmsg.version);
-                    wmmsg.subsystem = SDL_SYSWM_DIRECTFB;
-                    wmmsg.msg.dfb.event.window = evt;
-                    SDL_SendSysWMEvent(&wmmsg);
-                }
-                ProcessWindowEvent(_this, w, &evt);
-            }
-        }
-    }
-
-    /* Now get relative events in case we need them */
-    while (devdata->events->GetEvent(devdata->events,
-                                     DFB_EVENT(&ievt)) == DFB_OK) {
-
-        if (SDL_GetEventState(SDL_SYSWMEVENT) == SDL_ENABLE) {
-            SDL_SysWMmsg wmmsg;
-            SDL_VERSION(&wmmsg.version);
-            wmmsg.subsystem = SDL_SYSWM_DIRECTFB;
-            wmmsg.msg.dfb.event.input = ievt;
-            SDL_SendSysWMEvent(&wmmsg);
-        }
-        ProcessInputEvent(_this, &ievt);
-    }
-}
-
-void
-DirectFB_InitOSKeymap(_THIS, SDL_Scancode * keymap, int numkeys)
-{
-    int i;
-
-    /* Initialize the DirectFB key translation table */
-    for (i = 0; i < numkeys; ++i)
-        keymap[i] = SDL_SCANCODE_UNKNOWN;
-
-    keymap[DIKI_A - DIKI_UNKNOWN] = SDL_SCANCODE_A;
-    keymap[DIKI_B - DIKI_UNKNOWN] = SDL_SCANCODE_B;
-    keymap[DIKI_C - DIKI_UNKNOWN] = SDL_SCANCODE_C;
-    keymap[DIKI_D - DIKI_UNKNOWN] = SDL_SCANCODE_D;
-    keymap[DIKI_E - DIKI_UNKNOWN] = SDL_SCANCODE_E;
-    keymap[DIKI_F - DIKI_UNKNOWN] = SDL_SCANCODE_F;
-    keymap[DIKI_G - DIKI_UNKNOWN] = SDL_SCANCODE_G;
-    keymap[DIKI_H - DIKI_UNKNOWN] = SDL_SCANCODE_H;
-    keymap[DIKI_I - DIKI_UNKNOWN] = SDL_SCANCODE_I;
-    keymap[DIKI_J - DIKI_UNKNOWN] = SDL_SCANCODE_J;
-    keymap[DIKI_K - DIKI_UNKNOWN] = SDL_SCANCODE_K;
-    keymap[DIKI_L - DIKI_UNKNOWN] = SDL_SCANCODE_L;
-    keymap[DIKI_M - DIKI_UNKNOWN] = SDL_SCANCODE_M;
-    keymap[DIKI_N - DIKI_UNKNOWN] = SDL_SCANCODE_N;
-    keymap[DIKI_O - DIKI_UNKNOWN] = SDL_SCANCODE_O;
-    keymap[DIKI_P - DIKI_UNKNOWN] = SDL_SCANCODE_P;
-    keymap[DIKI_Q - DIKI_UNKNOWN] = SDL_SCANCODE_Q;
-    keymap[DIKI_R - DIKI_UNKNOWN] = SDL_SCANCODE_R;
-    keymap[DIKI_S - DIKI_UNKNOWN] = SDL_SCANCODE_S;
-    keymap[DIKI_T - DIKI_UNKNOWN] = SDL_SCANCODE_T;
-    keymap[DIKI_U - DIKI_UNKNOWN] = SDL_SCANCODE_U;
-    keymap[DIKI_V - DIKI_UNKNOWN] = SDL_SCANCODE_V;
-    keymap[DIKI_W - DIKI_UNKNOWN] = SDL_SCANCODE_W;
-    keymap[DIKI_X - DIKI_UNKNOWN] = SDL_SCANCODE_X;
-    keymap[DIKI_Y - DIKI_UNKNOWN] = SDL_SCANCODE_Y;
-    keymap[DIKI_Z - DIKI_UNKNOWN] = SDL_SCANCODE_Z;
-
-    keymap[DIKI_0 - DIKI_UNKNOWN] = SDL_SCANCODE_0;
-    keymap[DIKI_1 - DIKI_UNKNOWN] = SDL_SCANCODE_1;
-    keymap[DIKI_2 - DIKI_UNKNOWN] = SDL_SCANCODE_2;
-    keymap[DIKI_3 - DIKI_UNKNOWN] = SDL_SCANCODE_3;
-    keymap[DIKI_4 - DIKI_UNKNOWN] = SDL_SCANCODE_4;
-    keymap[DIKI_5 - DIKI_UNKNOWN] = SDL_SCANCODE_5;
-    keymap[DIKI_6 - DIKI_UNKNOWN] = SDL_SCANCODE_6;
-    keymap[DIKI_7 - DIKI_UNKNOWN] = SDL_SCANCODE_7;
-    keymap[DIKI_8 - DIKI_UNKNOWN] = SDL_SCANCODE_8;
-    keymap[DIKI_9 - DIKI_UNKNOWN] = SDL_SCANCODE_9;
-
-    keymap[DIKI_F1 - DIKI_UNKNOWN] = SDL_SCANCODE_F1;
-    keymap[DIKI_F2 - DIKI_UNKNOWN] = SDL_SCANCODE_F2;
-    keymap[DIKI_F3 - DIKI_UNKNOWN] = SDL_SCANCODE_F3;
-    keymap[DIKI_F4 - DIKI_UNKNOWN] = SDL_SCANCODE_F4;
-    keymap[DIKI_F5 - DIKI_UNKNOWN] = SDL_SCANCODE_F5;
-    keymap[DIKI_F6 - DIKI_UNKNOWN] = SDL_SCANCODE_F6;
-    keymap[DIKI_F7 - DIKI_UNKNOWN] = SDL_SCANCODE_F7;
-    keymap[DIKI_F8 - DIKI_UNKNOWN] = SDL_SCANCODE_F8;
-    keymap[DIKI_F9 - DIKI_UNKNOWN] = SDL_SCANCODE_F9;
-    keymap[DIKI_F10 - DIKI_UNKNOWN] = SDL_SCANCODE_F10;
-    keymap[DIKI_F11 - DIKI_UNKNOWN] = SDL_SCANCODE_F11;
-    keymap[DIKI_F12 - DIKI_UNKNOWN] = SDL_SCANCODE_F12;
-
-    keymap[DIKI_ESCAPE - DIKI_UNKNOWN] = SDL_SCANCODE_ESCAPE;
-    keymap[DIKI_LEFT - DIKI_UNKNOWN] = SDL_SCANCODE_LEFT;
-    keymap[DIKI_RIGHT - DIKI_UNKNOWN] = SDL_SCANCODE_RIGHT;
-    keymap[DIKI_UP - DIKI_UNKNOWN] = SDL_SCANCODE_UP;
-    keymap[DIKI_DOWN - DIKI_UNKNOWN] = SDL_SCANCODE_DOWN;
-    keymap[DIKI_CONTROL_L - DIKI_UNKNOWN] = SDL_SCANCODE_LCTRL;
-    keymap[DIKI_CONTROL_R - DIKI_UNKNOWN] = SDL_SCANCODE_RCTRL;
-    keymap[DIKI_SHIFT_L - DIKI_UNKNOWN] = SDL_SCANCODE_LSHIFT;
-    keymap[DIKI_SHIFT_R - DIKI_UNKNOWN] = SDL_SCANCODE_RSHIFT;
-    keymap[DIKI_ALT_L - DIKI_UNKNOWN] = SDL_SCANCODE_LALT;
-    keymap[DIKI_ALT_R - DIKI_UNKNOWN] = SDL_SCANCODE_RALT;
-    keymap[DIKI_META_L - DIKI_UNKNOWN] = SDL_SCANCODE_LGUI;
-    keymap[DIKI_META_R - DIKI_UNKNOWN] = SDL_SCANCODE_RGUI;
-    keymap[DIKI_SUPER_L - DIKI_UNKNOWN] = SDL_SCANCODE_APPLICATION;
-    keymap[DIKI_SUPER_R - DIKI_UNKNOWN] = SDL_SCANCODE_APPLICATION;
-    /* FIXME:Do we read hyper keys ?
-     * keymap[DIKI_HYPER_L - DIKI_UNKNOWN] = SDL_SCANCODE_APPLICATION;
-     * keymap[DIKI_HYPER_R - DIKI_UNKNOWN] = SDL_SCANCODE_APPLICATION;
-     */
-    keymap[DIKI_TAB - DIKI_UNKNOWN] = SDL_SCANCODE_TAB;
-    keymap[DIKI_ENTER - DIKI_UNKNOWN] = SDL_SCANCODE_RETURN;
-    keymap[DIKI_SPACE - DIKI_UNKNOWN] = SDL_SCANCODE_SPACE;
-    keymap[DIKI_BACKSPACE - DIKI_UNKNOWN] = SDL_SCANCODE_BACKSPACE;
-    keymap[DIKI_INSERT - DIKI_UNKNOWN] = SDL_SCANCODE_INSERT;
-    keymap[DIKI_DELETE - DIKI_UNKNOWN] = SDL_SCANCODE_DELETE;
-    keymap[DIKI_HOME - DIKI_UNKNOWN] = SDL_SCANCODE_HOME;
-    keymap[DIKI_END - DIKI_UNKNOWN] = SDL_SCANCODE_END;
-    keymap[DIKI_PAGE_UP - DIKI_UNKNOWN] = SDL_SCANCODE_PAGEUP;
-    keymap[DIKI_PAGE_DOWN - DIKI_UNKNOWN] = SDL_SCANCODE_PAGEDOWN;
-    keymap[DIKI_CAPS_LOCK - DIKI_UNKNOWN] = SDL_SCANCODE_CAPSLOCK;
-    keymap[DIKI_NUM_LOCK - DIKI_UNKNOWN] = SDL_SCANCODE_NUMLOCKCLEAR;
-    keymap[DIKI_SCROLL_LOCK - DIKI_UNKNOWN] = SDL_SCANCODE_SCROLLLOCK;
-    keymap[DIKI_PRINT - DIKI_UNKNOWN] = SDL_SCANCODE_PRINTSCREEN;
-    keymap[DIKI_PAUSE - DIKI_UNKNOWN] = SDL_SCANCODE_PAUSE;
-
-    keymap[DIKI_KP_EQUAL - DIKI_UNKNOWN] = SDL_SCANCODE_KP_EQUALS;
-    keymap[DIKI_KP_DECIMAL - DIKI_UNKNOWN] = SDL_SCANCODE_KP_PERIOD;
-    keymap[DIKI_KP_0 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_0;
-    keymap[DIKI_KP_1 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_1;
-    keymap[DIKI_KP_2 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_2;
-    keymap[DIKI_KP_3 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_3;
-    keymap[DIKI_KP_4 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_4;
-    keymap[DIKI_KP_5 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_5;
-    keymap[DIKI_KP_6 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_6;
-    keymap[DIKI_KP_7 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_7;
-    keymap[DIKI_KP_8 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_8;
-    keymap[DIKI_KP_9 - DIKI_UNKNOWN] = SDL_SCANCODE_KP_9;
-    keymap[DIKI_KP_DIV - DIKI_UNKNOWN] = SDL_SCANCODE_KP_DIVIDE;
-    keymap[DIKI_KP_MULT - DIKI_UNKNOWN] = SDL_SCANCODE_KP_MULTIPLY;
-    keymap[DIKI_KP_MINUS - DIKI_UNKNOWN] = SDL_SCANCODE_KP_MINUS;
-    keymap[DIKI_KP_PLUS - DIKI_UNKNOWN] = SDL_SCANCODE_KP_PLUS;
-    keymap[DIKI_KP_ENTER - DIKI_UNKNOWN] = SDL_SCANCODE_KP_ENTER;
-
-    keymap[DIKI_QUOTE_LEFT - DIKI_UNKNOWN] = SDL_SCANCODE_GRAVE;        /*  TLDE  */
-    keymap[DIKI_MINUS_SIGN - DIKI_UNKNOWN] = SDL_SCANCODE_MINUS;        /*  AE11  */
-    keymap[DIKI_EQUALS_SIGN - DIKI_UNKNOWN] = SDL_SCANCODE_EQUALS;      /*  AE12  */
-    keymap[DIKI_BRACKET_LEFT - DIKI_UNKNOWN] = SDL_SCANCODE_RIGHTBRACKET;       /*  AD11  */
-    keymap[DIKI_BRACKET_RIGHT - DIKI_UNKNOWN] = SDL_SCANCODE_LEFTBRACKET;       /*  AD12  */
-    keymap[DIKI_BACKSLASH - DIKI_UNKNOWN] = SDL_SCANCODE_BACKSLASH;     /*  BKSL  */
-    keymap[DIKI_SEMICOLON - DIKI_UNKNOWN] = SDL_SCANCODE_SEMICOLON;     /*  AC10  */
-    keymap[DIKI_QUOTE_RIGHT - DIKI_UNKNOWN] = SDL_SCANCODE_APOSTROPHE;  /*  AC11  */
-    keymap[DIKI_COMMA - DIKI_UNKNOWN] = SDL_SCANCODE_COMMA;     /*  AB08  */
-    keymap[DIKI_PERIOD - DIKI_UNKNOWN] = SDL_SCANCODE_PERIOD;   /*  AB09  */
-    keymap[DIKI_SLASH - DIKI_UNKNOWN] = SDL_SCANCODE_SLASH;     /*  AB10  */
-    keymap[DIKI_LESS_SIGN - DIKI_UNKNOWN] = SDL_SCANCODE_NONUSBACKSLASH;        /*  103rd  */
-
-}
-
-static SDL_Keysym *
-DirectFB_TranslateKey(_THIS, DFBWindowEvent * evt, SDL_Keysym * keysym, Uint32 *unicode)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    int kbd_idx = 0; /* Window events lag the device source KbdIndex(_this, evt->device_id); */
-    DFB_KeyboardData *kbd = &devdata->keyboard[kbd_idx];
-
-    keysym->scancode = SDL_SCANCODE_UNKNOWN;
-
-    if (kbd->map && evt->key_code >= kbd->map_adjust &&
-        evt->key_code < kbd->map_size + kbd->map_adjust)
-        keysym->scancode = kbd->map[evt->key_code - kbd->map_adjust];
-
-    if (keysym->scancode == SDL_SCANCODE_UNKNOWN ||
-        devdata->keyboard[kbd_idx].is_generic) {
-        if (evt->key_id - DIKI_UNKNOWN < SDL_arraysize(oskeymap))
-            keysym->scancode = oskeymap[evt->key_id - DIKI_UNKNOWN];
-        else
-            keysym->scancode = SDL_SCANCODE_UNKNOWN;
-    }
-
-    *unicode =
-        (DFB_KEY_TYPE(evt->key_symbol) == DIKT_UNICODE) ? evt->key_symbol : 0;
-    if (*unicode == 0 &&
-        (evt->key_symbol > 0 && evt->key_symbol < 255))
-        *unicode = evt->key_symbol;
-
-    return keysym;
-}
-
-static SDL_Keysym *
-DirectFB_TranslateKeyInputEvent(_THIS, DFBInputEvent * evt,
-                                SDL_Keysym * keysym, Uint32 *unicode)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    int kbd_idx = KbdIndex(_this, evt->device_id);
-    DFB_KeyboardData *kbd = &devdata->keyboard[kbd_idx];
-
-    keysym->scancode = SDL_SCANCODE_UNKNOWN;
-
-    if (kbd->map && evt->key_code >= kbd->map_adjust &&
-        evt->key_code < kbd->map_size + kbd->map_adjust)
-        keysym->scancode = kbd->map[evt->key_code - kbd->map_adjust];
-
-    if (keysym->scancode == SDL_SCANCODE_UNKNOWN || devdata->keyboard[kbd_idx].is_generic) {
-        if (evt->key_id - DIKI_UNKNOWN < SDL_arraysize(oskeymap))
-            keysym->scancode = oskeymap[evt->key_id - DIKI_UNKNOWN];
-        else
-            keysym->scancode = SDL_SCANCODE_UNKNOWN;
-    }
-
-    *unicode =
-        (DFB_KEY_TYPE(evt->key_symbol) == DIKT_UNICODE) ? evt->key_symbol : 0;
-    if (*unicode == 0 &&
-        (evt->key_symbol > 0 && evt->key_symbol < 255))
-        *unicode = evt->key_symbol;
-
-    return keysym;
-}
-
-static int
-DirectFB_TranslateButton(DFBInputDeviceButtonIdentifier button)
-{
-    switch (button) {
-    case DIBI_LEFT:
-        return 1;
-    case DIBI_MIDDLE:
-        return 2;
-    case DIBI_RIGHT:
-        return 3;
-    default:
-        return 0;
-    }
-}
-
-static DFBEnumerationResult
-EnumKeyboards(DFBInputDeviceID device_id,
-                DFBInputDeviceDescription desc, void *callbackdata)
-{
-    cb_data *cb = callbackdata;
-    DFB_DeviceData *devdata = cb->devdata;
-#if USE_MULTI_API
-    SDL_Keyboard keyboard;
-#endif
-
-    if (!cb->sys_kbd) {
-        if (cb->sys_ids) {
-            if (device_id >= 0x10)
-                return DFENUM_OK;
-        } else {
-            if (device_id < 0x10)
-                return DFENUM_OK;
-        }
-    } else {
-        if (device_id != DIDID_KEYBOARD)
-            return DFENUM_OK;
-    }
-
-    if ((desc.caps & DIDTF_KEYBOARD)) {
-#if USE_MULTI_API
-        SDL_zero(keyboard);
-        SDL_AddKeyboard(&keyboard, devdata->num_keyboard);
-#endif
-        devdata->keyboard[devdata->num_keyboard].id = device_id;
-        devdata->keyboard[devdata->num_keyboard].is_generic = 0;
-        if (!SDL_strncmp("X11", desc.name, 3))
-        {
-            devdata->keyboard[devdata->num_keyboard].map = SDL_GetScancodeTable(SDL_SCANCODE_TABLE_XFREE86_2, &devdata->keyboard[devdata->num_keyboard].map_size);
-            devdata->keyboard[devdata->num_keyboard].map_adjust = 8;
-        } else {
-            devdata->keyboard[devdata->num_keyboard].map = SDL_GetScancodeTable(SDL_SCANCODE_TABLE_LINUX, &devdata->keyboard[devdata->num_keyboard].map_size);
-            devdata->keyboard[devdata->num_keyboard].map_adjust = 0;
-        }
-
-        SDL_DFB_LOG("Keyboard %d - %s\n", device_id, desc.name);
-
-        devdata->num_keyboard++;
-
-        if (cb->sys_kbd)
-            return DFENUM_CANCEL;
-    }
-    return DFENUM_OK;
-}
-
-void
-DirectFB_InitKeyboard(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    cb_data cb;
-
-    DirectFB_InitOSKeymap(_this, &oskeymap[0], SDL_arraysize(oskeymap));
-
-    devdata->num_keyboard = 0;
-    cb.devdata = devdata;
-
-    if (devdata->use_linux_input) {
-        cb.sys_kbd = 0;
-        cb.sys_ids = 0;
-        SDL_DFB_CHECK(devdata->dfb->
-                      EnumInputDevices(devdata->dfb, EnumKeyboards, &cb));
-        if (devdata->num_keyboard == 0) {
-            cb.sys_ids = 1;
-            SDL_DFB_CHECK(devdata->dfb->EnumInputDevices(devdata->dfb,
-                                                         EnumKeyboards,
-                                                         &cb));
-        }
-    } else {
-        cb.sys_kbd = 1;
-        SDL_DFB_CHECK(devdata->dfb->EnumInputDevices(devdata->dfb,
-                                                     EnumKeyboards,
-                                                     &cb));
-    }
-}
-
-void
-DirectFB_QuitKeyboard(_THIS)
-{
-    /* SDL_DFB_DEVICEDATA(_this); */
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 34
src/video/directfb/SDL_DirectFB_events.h

@@ -1,34 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_DirectFB_events_h_
-#define SDL_DirectFB_events_h_
-
-#include "../SDL_sysvideo.h"
-
-/* Functions to be exported */
-extern void DirectFB_InitKeyboard(_THIS);
-extern void DirectFB_QuitKeyboard(_THIS);
-extern void DirectFB_PumpEventsWindow(_THIS);
-
-#endif /* SDL_DirectFB_events_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 414
src/video/directfb/SDL_DirectFB_modes.c

@@ -1,414 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_modes.h"
-
-#define DFB_MAX_MODES 200
-
-struct screen_callback_t
-{
-    int numscreens;
-    DFBScreenID screenid[DFB_MAX_SCREENS];
-    DFBDisplayLayerID gralayer[DFB_MAX_SCREENS];
-    DFBDisplayLayerID vidlayer[DFB_MAX_SCREENS];
-    int aux;                    /* auxiliary integer for callbacks */
-};
-
-struct modes_callback_t
-{
-    int nummodes;
-    SDL_DisplayMode *modelist;
-};
-
-static DFBEnumerationResult
-EnumModesCallback(int width, int height, int bpp, void *data)
-{
-    struct modes_callback_t *modedata = (struct modes_callback_t *) data;
-    SDL_DisplayMode mode;
-
-    mode.w = width;
-    mode.h = height;
-    mode.refresh_rate = 0;
-    mode.driverdata = NULL;
-    mode.format = SDL_PIXELFORMAT_UNKNOWN;
-
-    if (modedata->nummodes < DFB_MAX_MODES) {
-        modedata->modelist[modedata->nummodes++] = mode;
-    }
-
-    return DFENUM_OK;
-}
-
-static DFBEnumerationResult
-EnumScreensCallback(DFBScreenID screen_id, DFBScreenDescription desc,
-          void *callbackdata)
-{
-    struct screen_callback_t *devdata = (struct screen_callback_t *) callbackdata;
-
-    devdata->screenid[devdata->numscreens++] = screen_id;
-    return DFENUM_OK;
-}
-
-static DFBEnumerationResult
-EnumLayersCallback(DFBDisplayLayerID layer_id, DFBDisplayLayerDescription desc,
-         void *callbackdata)
-{
-    struct screen_callback_t *devdata = (struct screen_callback_t *) callbackdata;
-
-    if (desc.caps & DLCAPS_SURFACE) {
-        if ((desc.type & DLTF_GRAPHICS) && (desc.type & DLTF_VIDEO)) {
-            if (devdata->vidlayer[devdata->aux] == -1)
-                devdata->vidlayer[devdata->aux] = layer_id;
-        } else if (desc.type & DLTF_GRAPHICS) {
-            if (devdata->gralayer[devdata->aux] == -1)
-                devdata->gralayer[devdata->aux] = layer_id;
-        }
-    }
-    return DFENUM_OK;
-}
-
-static void
-CheckSetDisplayMode(_THIS, SDL_VideoDisplay * display, DFB_DisplayData * data, SDL_DisplayMode * mode)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    DFBDisplayLayerConfig config;
-    DFBDisplayLayerConfigFlags failed;
-
-    SDL_DFB_CHECKERR(data->layer->SetCooperativeLevel(data->layer,
-                                                      DLSCL_ADMINISTRATIVE));
-    config.width = mode->w;
-    config.height = mode->h;
-    config.pixelformat = DirectFB_SDLToDFBPixelFormat(mode->format);
-    config.flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT;
-    if (devdata->use_yuv_underlays) {
-        config.flags |= DLCONF_OPTIONS;
-        config.options = DLOP_ALPHACHANNEL;
-    }
-    failed = 0;
-    data->layer->TestConfiguration(data->layer, &config, &failed);
-    SDL_DFB_CHECKERR(data->layer->SetCooperativeLevel(data->layer,
-                                                      DLSCL_SHARED));
-    if (failed == 0)
-    {
-        SDL_AddDisplayMode(display, mode);
-        SDL_DFB_LOG("Mode %d x %d Added\n", mode->w, mode->h);
-    }
-    else
-        SDL_DFB_ERR("Mode %d x %d not available: %x\n", mode->w,
-                      mode->h, failed);
-
-    return;
-  error:
-    return;
-}
-
-
-void
-DirectFB_SetContext(_THIS, SDL_Window *window)
-{
-#if (DFB_VERSION_ATLEAST(1,0,0))
-    /* FIXME: does not work on 1.0/1.2 with radeon driver
-     *        the approach did work with the matrox driver
-     *        This has simply no effect.
-     */
-
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-
-    /* FIXME: should we handle the error */
-    if (dispdata->vidIDinuse)
-        SDL_DFB_CHECK(dispdata->vidlayer->SwitchContext(dispdata->vidlayer,
-                                                           DFB_TRUE));
-#endif
-}
-
-void
-DirectFB_InitModes(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    IDirectFBDisplayLayer *layer = NULL;
-    SDL_VideoDisplay display;
-    DFB_DisplayData *dispdata = NULL;
-    SDL_DisplayMode mode;
-    DFBGraphicsDeviceDescription caps;
-    DFBDisplayLayerConfig dlc;
-    struct screen_callback_t *screencbdata;
-
-    int tcw[DFB_MAX_SCREENS];
-    int tch[DFB_MAX_SCREENS];
-    int i;
-    DFBResult ret;
-
-    SDL_DFB_ALLOC_CLEAR(screencbdata, sizeof(*screencbdata));
-
-    screencbdata->numscreens = 0;
-
-    for (i = 0; i < DFB_MAX_SCREENS; i++) {
-        screencbdata->gralayer[i] = -1;
-        screencbdata->vidlayer[i] = -1;
-    }
-
-    SDL_DFB_CHECKERR(devdata->dfb->EnumScreens(devdata->dfb, &EnumScreensCallback,
-                                               screencbdata));
-
-    for (i = 0; i < screencbdata->numscreens; i++) {
-        IDirectFBScreen *screen;
-
-        SDL_DFB_CHECKERR(devdata->dfb->GetScreen(devdata->dfb,
-                                                 screencbdata->screenid
-                                                 [i], &screen));
-
-        screencbdata->aux = i;
-        SDL_DFB_CHECKERR(screen->EnumDisplayLayers(screen, &EnumLayersCallback,
-                                                   screencbdata));
-        screen->GetSize(screen, &tcw[i], &tch[i]);
-
-        screen->Release(screen);
-    }
-
-    /* Query card capabilities */
-
-    devdata->dfb->GetDeviceDescription(devdata->dfb, &caps);
-
-    for (i = 0; i < screencbdata->numscreens; i++) {
-        SDL_DFB_CHECKERR(devdata->dfb->GetDisplayLayer(devdata->dfb,
-                                                       screencbdata->gralayer
-                                                       [i], &layer));
-
-        SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer,
-                                                    DLSCL_ADMINISTRATIVE));
-        layer->EnableCursor(layer, 1);
-        SDL_DFB_CHECKERR(layer->SetCursorOpacity(layer, 0xC0));
-
-        if (devdata->use_yuv_underlays) {
-            dlc.flags = DLCONF_PIXELFORMAT | DLCONF_OPTIONS;
-            dlc.pixelformat = DSPF_ARGB;
-            dlc.options = DLOP_ALPHACHANNEL;
-
-            ret = layer->SetConfiguration(layer, &dlc);
-            if (ret != DFB_OK) {
-                /* try AiRGB if the previous failed */
-                dlc.pixelformat = DSPF_AiRGB;
-                SDL_DFB_CHECKERR(layer->SetConfiguration(layer, &dlc));
-            }
-        }
-
-        /* Query layer configuration to determine the current mode and pixelformat */
-        dlc.flags = DLCONF_ALL;
-        SDL_DFB_CHECKERR(layer->GetConfiguration(layer, &dlc));
-
-        mode.format = DirectFB_DFBToSDLPixelFormat(dlc.pixelformat);
-
-        if (mode.format == SDL_PIXELFORMAT_UNKNOWN) {
-            SDL_DFB_ERR("Unknown dfb pixelformat %x !\n", dlc.pixelformat);
-            goto error;
-        }
-
-        mode.w = dlc.width;
-        mode.h = dlc.height;
-        mode.refresh_rate = 0;
-        mode.driverdata = NULL;
-
-        SDL_DFB_ALLOC_CLEAR(dispdata, sizeof(*dispdata));
-
-        dispdata->layer = layer;
-        dispdata->pixelformat = dlc.pixelformat;
-        dispdata->cw = tcw[i];
-        dispdata->ch = tch[i];
-
-        /* YUV - Video layer */
-
-        dispdata->vidID = screencbdata->vidlayer[i];
-        dispdata->vidIDinuse = 0;
-
-        SDL_zero(display);
-
-        display.desktop_mode = mode;
-        display.current_mode = mode;
-        display.driverdata = dispdata;
-
-#if (DFB_VERSION_ATLEAST(1,2,0))
-        dlc.flags =
-            DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT |
-            DLCONF_OPTIONS;
-        ret = layer->SetConfiguration(layer, &dlc);
-#endif
-
-        SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer, DLSCL_SHARED));
-
-        SDL_AddVideoDisplay(&display, SDL_FALSE);
-    }
-    SDL_DFB_FREE(screencbdata);
-    return;
-  error:
-    /* FIXME: Cleanup not complete, Free existing displays */
-    SDL_DFB_FREE(dispdata);
-    SDL_DFB_RELEASE(layer);
-    return;
-}
-
-void
-DirectFB_GetDisplayModes(_THIS, SDL_VideoDisplay * display)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-    SDL_DisplayMode mode;
-    struct modes_callback_t data;
-    int i;
-
-    data.nummodes = 0;
-    /* Enumerate the available fullscreen modes */
-    SDL_DFB_CALLOC(data.modelist, DFB_MAX_MODES, sizeof(SDL_DisplayMode));
-    SDL_DFB_CHECKERR(devdata->dfb->EnumVideoModes(devdata->dfb,
-                                                  EnumModesCallback, &data));
-
-    for (i = 0; i < data.nummodes; ++i) {
-        mode = data.modelist[i];
-
-        mode.format = SDL_PIXELFORMAT_ARGB8888;
-        CheckSetDisplayMode(_this, display, dispdata, &mode);
-        mode.format = SDL_PIXELFORMAT_RGB888;
-        CheckSetDisplayMode(_this, display, dispdata, &mode);
-        mode.format = SDL_PIXELFORMAT_RGB24;
-        CheckSetDisplayMode(_this, display, dispdata, &mode);
-        mode.format = SDL_PIXELFORMAT_RGB565;
-        CheckSetDisplayMode(_this, display, dispdata, &mode);
-        mode.format = SDL_PIXELFORMAT_INDEX8;
-        CheckSetDisplayMode(_this, display, dispdata, &mode);
-    }
-
-    SDL_DFB_FREE(data.modelist);
-error:
-    return;
-}
-
-int
-DirectFB_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode)
-{
-    /*
-     * FIXME: video mode switch is currently broken for 1.2.0
-     *
-     */
-
-    SDL_DFB_DEVICEDATA(_this);
-    DFB_DisplayData *data = (DFB_DisplayData *) display->driverdata;
-    DFBDisplayLayerConfig config, rconfig;
-    DFBDisplayLayerConfigFlags fail = 0;
-
-    SDL_DFB_CHECKERR(data->layer->SetCooperativeLevel(data->layer,
-                                                      DLSCL_ADMINISTRATIVE));
-
-    SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &config));
-    config.flags = DLCONF_WIDTH | DLCONF_HEIGHT;
-    if (mode->format != SDL_PIXELFORMAT_UNKNOWN) {
-        config.flags |= DLCONF_PIXELFORMAT;
-        config.pixelformat = DirectFB_SDLToDFBPixelFormat(mode->format);
-        data->pixelformat = config.pixelformat;
-    }
-    config.width = mode->w;
-    config.height = mode->h;
-
-    if (devdata->use_yuv_underlays) {
-        config.flags |= DLCONF_OPTIONS;
-        config.options = DLOP_ALPHACHANNEL;
-    }
-
-    data->layer->TestConfiguration(data->layer, &config, &fail);
-
-    if (fail &
-        (DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT |
-         DLCONF_OPTIONS)) {
-        SDL_DFB_ERR("Error setting mode %dx%d-%x\n", mode->w, mode->h,
-                    mode->format);
-        return -1;
-    }
-
-    config.flags &= ~fail;
-    SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config));
-#if (DFB_VERSION_ATLEAST(1,2,0))
-    /* Need to call this twice ! */
-    SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config));
-#endif
-
-    /* Double check */
-    SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &rconfig));
-    SDL_DFB_CHECKERR(data->
-                     layer->SetCooperativeLevel(data->layer, DLSCL_SHARED));
-
-    if ((config.width != rconfig.width) || (config.height != rconfig.height)
-        || ((mode->format != SDL_PIXELFORMAT_UNKNOWN)
-            && (config.pixelformat != rconfig.pixelformat))) {
-        SDL_DFB_ERR("Error setting mode %dx%d-%x\n", mode->w, mode->h,
-                    mode->format);
-        return -1;
-    }
-
-    data->pixelformat = rconfig.pixelformat;
-    data->cw = config.width;
-    data->ch = config.height;
-    display->current_mode = *mode;
-
-    return 0;
-  error:
-    return -1;
-}
-
-void
-DirectFB_QuitModes(_THIS)
-{
-    SDL_DisplayMode tmode;
-    int i;
-
-    for (i = 0; i < _this->num_displays; ++i) {
-        SDL_VideoDisplay *display = &_this->displays[i];
-        DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-
-        SDL_GetDesktopDisplayMode(i, &tmode);
-        tmode.format = SDL_PIXELFORMAT_UNKNOWN;
-        DirectFB_SetDisplayMode(_this, display, &tmode);
-
-        SDL_GetDesktopDisplayMode(i, &tmode);
-        DirectFB_SetDisplayMode(_this, display, &tmode);
-
-        if (dispdata->layer) {
-            SDL_DFB_CHECK(dispdata->
-                          layer->SetCooperativeLevel(dispdata->layer,
-                                                     DLSCL_ADMINISTRATIVE));
-            SDL_DFB_CHECK(dispdata->
-                          layer->SetCursorOpacity(dispdata->layer, 0x00));
-            SDL_DFB_CHECK(dispdata->
-                          layer->SetCooperativeLevel(dispdata->layer,
-                                                     DLSCL_SHARED));
-        }
-
-        SDL_DFB_RELEASE(dispdata->layer);
-        SDL_DFB_RELEASE(dispdata->vidlayer);
-
-    }
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 59
src/video/directfb/SDL_DirectFB_modes.h

@@ -1,59 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_directfb_modes_h_
-#define SDL_directfb_modes_h_
-
-#include <directfb.h>
-
-#include "../SDL_sysvideo.h"
-
-#define SDL_DFB_DISPLAYDATA(win)  DFB_DisplayData *dispdata = ((win) ? (DFB_DisplayData *) SDL_GetDisplayForWindow(window)->driverdata : NULL)
-
-typedef struct _DFB_DisplayData DFB_DisplayData;
-struct _DFB_DisplayData
-{
-    IDirectFBDisplayLayer   *layer;
-    DFBSurfacePixelFormat   pixelformat;
-    /* FIXME: support for multiple video layer.
-     * However, I do not know any card supporting
-     * more than one
-     */
-    DFBDisplayLayerID       vidID;
-    IDirectFBDisplayLayer   *vidlayer;
-
-    int                     vidIDinuse;
-
-    int                     cw;
-    int                     ch;
-};
-
-
-extern void DirectFB_InitModes(_THIS);
-extern void DirectFB_GetDisplayModes(_THIS, SDL_VideoDisplay * display);
-extern int DirectFB_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
-extern void DirectFB_QuitModes(_THIS);
-
-extern void DirectFB_SetContext(_THIS, SDL_Window *window);
-
-#endif /* SDL_directfb_modes_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 388
src/video/directfb/SDL_DirectFB_mouse.c

@@ -1,388 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_mouse.h"
-#include "SDL_DirectFB_modes.h"
-#include "SDL_DirectFB_window.h"
-
-#include "../SDL_sysvideo.h"
-#include "../../events/SDL_mouse_c.h"
-
-static SDL_Cursor *DirectFB_CreateDefaultCursor(void);
-static SDL_Cursor *DirectFB_CreateCursor(SDL_Surface * surface,
-                                         int hot_x, int hot_y);
-static int DirectFB_ShowCursor(SDL_Cursor * cursor);
-static void DirectFB_FreeCursor(SDL_Cursor * cursor);
-static void DirectFB_WarpMouse(SDL_Window * window, int x, int y);
-
-static const char *arrow[] = {
-    /* pixels */
-    "X                               ",
-    "XX                              ",
-    "X.X                             ",
-    "X..X                            ",
-    "X...X                           ",
-    "X....X                          ",
-    "X.....X                         ",
-    "X......X                        ",
-    "X.......X                       ",
-    "X........X                      ",
-    "X.....XXXXX                     ",
-    "X..X..X                         ",
-    "X.X X..X                        ",
-    "XX  X..X                        ",
-    "X    X..X                       ",
-    "     X..X                       ",
-    "      X..X                      ",
-    "      X..X                      ",
-    "       XX                       ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-    "                                ",
-};
-
-static SDL_Cursor *
-DirectFB_CreateDefaultCursor(void)
-{
-    SDL_VideoDevice *dev = SDL_GetVideoDevice();
-
-    SDL_DFB_DEVICEDATA(dev);
-    DFB_CursorData *curdata;
-    DFBSurfaceDescription dsc;
-    SDL_Cursor *cursor;
-    Uint32 *dest;
-    int pitch, i, j;
-
-    SDL_DFB_ALLOC_CLEAR( cursor, sizeof(*cursor));
-    SDL_DFB_ALLOC_CLEAR(curdata, sizeof(*curdata));
-
-    dsc.flags =
-        DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
-    dsc.caps = DSCAPS_VIDEOONLY;
-    dsc.width = 32;
-    dsc.height = 32;
-    dsc.pixelformat = DSPF_ARGB;
-
-    SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc,
-                                                 &curdata->surf));
-    curdata->hotx = 0;
-    curdata->hoty = 0;
-    cursor->driverdata = curdata;
-
-    SDL_DFB_CHECKERR(curdata->surf->Lock(curdata->surf, DSLF_WRITE,
-                                         (void *) &dest, &pitch));
-
-    /* Relies on the fact that this is only called with ARGB surface. */
-    for (i = 0; i < 32; i++)
-    {
-        for (j = 0; j < 32; j++)
-        {
-            switch (arrow[i][j])
-            {
-            case ' ': dest[j] = 0x00000000; break;
-            case '.': dest[j] = 0xffffffff; break;
-            case 'X': dest[j] = 0xff000000; break;
-            }
-        }
-        dest += (pitch >> 2);
-    }
-
-    curdata->surf->Unlock(curdata->surf);
-    return cursor;
-  error:
-    return NULL;
-}
-
-/* Create a cursor from a surface */
-static SDL_Cursor *
-DirectFB_CreateCursor(SDL_Surface * surface, int hot_x, int hot_y)
-{
-    SDL_VideoDevice *dev = SDL_GetVideoDevice();
-
-    SDL_DFB_DEVICEDATA(dev);
-    DFB_CursorData *curdata;
-    DFBSurfaceDescription dsc;
-    SDL_Cursor *cursor;
-    Uint32 *dest;
-    Uint32 *p;
-    int pitch, i;
-
-    SDL_assert(surface->format->format == SDL_PIXELFORMAT_ARGB8888);
-    SDL_assert(surface->pitch == surface->w * 4);
-
-    SDL_DFB_ALLOC_CLEAR( cursor, sizeof(*cursor));
-    SDL_DFB_ALLOC_CLEAR(curdata, sizeof(*curdata));
-
-    dsc.flags =
-        DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
-    dsc.caps = DSCAPS_VIDEOONLY;
-    dsc.width = surface->w;
-    dsc.height = surface->h;
-    dsc.pixelformat = DSPF_ARGB;
-
-    SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc,
-                                                 &curdata->surf));
-    curdata->hotx = hot_x;
-    curdata->hoty = hot_y;
-    cursor->driverdata = curdata;
-
-    SDL_DFB_CHECKERR(curdata->surf->Lock(curdata->surf, DSLF_WRITE,
-                                         (void *) &dest, &pitch));
-
-    p = surface->pixels;
-    for (i = 0; i < surface->h; i++)
-        SDL_memcpy((char *) dest + i * pitch,
-               (char *) p + i * surface->pitch, 4 * surface->w);
-
-    curdata->surf->Unlock(curdata->surf);
-    return cursor;
-  error:
-    return NULL;
-}
-
-/* Show the specified cursor, or hide if cursor is NULL */
-static int
-DirectFB_ShowCursor(SDL_Cursor * cursor)
-{
-    SDL_DFB_CURSORDATA(cursor);
-    SDL_Window *window;
-
-    window = SDL_GetFocusWindow();
-    if (!window)
-        return -1;
-    else {
-        SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-
-        if (display) {
-            DFB_DisplayData *dispdata =
-                (DFB_DisplayData *) display->driverdata;
-            DFB_WindowData *windata = (DFB_WindowData *) window->driverdata;
-
-            if (cursor)
-                SDL_DFB_CHECKERR(windata->dfbwin->
-                                 SetCursorShape(windata->dfbwin,
-                                                curdata->surf, curdata->hotx,
-                                                curdata->hoty));
-
-            SDL_DFB_CHECKERR(dispdata->layer->
-                             SetCooperativeLevel(dispdata->layer,
-                                                 DLSCL_ADMINISTRATIVE));
-            SDL_DFB_CHECKERR(dispdata->layer->
-                             SetCursorOpacity(dispdata->layer,
-                                              cursor ? 0xC0 : 0x00));
-            SDL_DFB_CHECKERR(dispdata->layer->
-                             SetCooperativeLevel(dispdata->layer,
-                                                 DLSCL_SHARED));
-        }
-    }
-
-    return 0;
-  error:
-    return -1;
-}
-
-/* Free a window manager cursor */
-static void
-DirectFB_FreeCursor(SDL_Cursor * cursor)
-{
-    SDL_DFB_CURSORDATA(cursor);
-
-    SDL_DFB_RELEASE(curdata->surf);
-    SDL_DFB_FREE(cursor->driverdata);
-    SDL_DFB_FREE(cursor);
-}
-
-/* Warp the mouse to (x,y) */
-static void
-DirectFB_WarpMouse(SDL_Window * window, int x, int y)
-{
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-    DFB_WindowData *windata = (DFB_WindowData *) window->driverdata;
-    int cx, cy;
-
-    SDL_DFB_CHECKERR(windata->dfbwin->GetPosition(windata->dfbwin, &cx, &cy));
-    SDL_DFB_CHECKERR(dispdata->layer->WarpCursor(dispdata->layer,
-                                                 cx + x + windata->client.x,
-                                                 cy + y + windata->client.y));
-
-  error:
-    return;
-}
-
-#if USE_MULTI_API
-
-static void DirectFB_MoveCursor(SDL_Cursor * cursor);
-static void DirectFB_WarpMouse(SDL_Mouse * mouse, SDL_Window * window,
-                               int x, int y);
-static void DirectFB_FreeMouse(SDL_Mouse * mouse);
-
-static int id_mask;
-
-static DFBEnumerationResult
-EnumMice(DFBInputDeviceID device_id, DFBInputDeviceDescription desc,
-         void *callbackdata)
-{
-    DFB_DeviceData *devdata = callbackdata;
-
-    if ((desc.type & DIDTF_MOUSE) && (device_id & id_mask)) {
-        SDL_Mouse mouse;
-
-        SDL_zero(mouse);
-        mouse.id = device_id;
-        mouse.CreateCursor = DirectFB_CreateCursor;
-        mouse.ShowCursor = DirectFB_ShowCursor;
-        mouse.MoveCursor = DirectFB_MoveCursor;
-        mouse.FreeCursor = DirectFB_FreeCursor;
-        mouse.WarpMouse = DirectFB_WarpMouse;
-        mouse.FreeMouse = DirectFB_FreeMouse;
-        mouse.cursor_shown = 1;
-
-        SDL_AddMouse(&mouse, desc.name, 0, 0, 1);
-        devdata->mouse_id[devdata->num_mice++] = device_id;
-    }
-    return DFENUM_OK;
-}
-
-void
-DirectFB_InitMouse(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-
-    devdata->num_mice = 0;
-    if (devdata->use_linux_input) {
-        /* try non-core devices first */
-        id_mask = 0xF0;
-        devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
-        if (devdata->num_mice == 0) {
-            /* try core devices */
-            id_mask = 0x0F;
-            devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
-        }
-    }
-    if (devdata->num_mice == 0) {
-        SDL_Mouse mouse;
-
-        SDL_zero(mouse);
-        mouse.CreateCursor = DirectFB_CreateCursor;
-        mouse.ShowCursor = DirectFB_ShowCursor;
-        mouse.MoveCursor = DirectFB_MoveCursor;
-        mouse.FreeCursor = DirectFB_FreeCursor;
-        mouse.WarpMouse = DirectFB_WarpMouse;
-        mouse.FreeMouse = DirectFB_FreeMouse;
-        mouse.cursor_shown = 1;
-
-        SDL_AddMouse(&mouse, "Mouse", 0, 0, 1);
-        devdata->num_mice = 1;
-    }
-}
-
-void
-DirectFB_QuitMouse(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-
-    if (devdata->use_linux_input) {
-        SDL_MouseQuit();
-    } else {
-        SDL_DelMouse(0);
-    }
-}
-
-
-/* This is called when a mouse motion event occurs */
-static void
-DirectFB_MoveCursor(SDL_Cursor * cursor)
-{
-
-}
-
-/* Warp the mouse to (x,y) */
-static void
-DirectFB_WarpMouse(SDL_Mouse * mouse, SDL_Window * window, int x, int y)
-{
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-    DFB_WindowData *windata = (DFB_WindowData *) window->driverdata;
-    DFBResult ret;
-    int cx, cy;
-
-    SDL_DFB_CHECKERR(windata->dfbwin->GetPosition(windata->dfbwin, &cx, &cy));
-    SDL_DFB_CHECKERR(dispdata->layer->WarpCursor(dispdata->layer,
-                                                 cx + x + windata->client.x,
-                                                 cy + y + windata->client.y));
-
-  error:
-    return;
-}
-
-/* Free the mouse when it's time */
-static void
-DirectFB_FreeMouse(SDL_Mouse * mouse)
-{
-    /* nothing yet */
-}
-
-#else /* USE_MULTI_API */
-
-void
-DirectFB_InitMouse(_THIS)
-{
-    SDL_DFB_DEVICEDATA(_this);
-
-    SDL_Mouse *mouse = SDL_GetMouse();
-
-    mouse->CreateCursor = DirectFB_CreateCursor;
-    mouse->ShowCursor = DirectFB_ShowCursor;
-    mouse->WarpMouse = DirectFB_WarpMouse;
-    mouse->FreeCursor = DirectFB_FreeCursor;
-
-    SDL_SetDefaultCursor(DirectFB_CreateDefaultCursor());
-
-    devdata->num_mice = 1;
-}
-
-void
-DirectFB_QuitMouse(_THIS)
-{
-}
-
-
-#endif
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 44
src/video/directfb/SDL_DirectFB_mouse.h

@@ -1,44 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_DirectFB_mouse_h_
-#define SDL_DirectFB_mouse_h_
-
-#include <directfb.h>
-
-#include "../SDL_sysvideo.h"
-
-typedef struct _DFB_CursorData DFB_CursorData;
-struct _DFB_CursorData
-{
-    IDirectFBSurface *surf;
-    int             hotx;
-    int             hoty;
-};
-
-#define SDL_DFB_CURSORDATA(curs)  DFB_CursorData *curdata = (DFB_CursorData *) ((curs) ? (curs)->driverdata : NULL)
-
-extern void DirectFB_InitMouse(_THIS);
-extern void DirectFB_QuitMouse(_THIS);
-
-#endif /* SDL_DirectFB_mouse_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 332
src/video/directfb/SDL_DirectFB_opengl.c

@@ -1,332 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-
-#if SDL_DIRECTFB_OPENGL
-
-#include "SDL_DirectFB_opengl.h"
-#include "SDL_DirectFB_window.h"
-
-#include <directfbgl.h>
-#include "SDL_loadso.h"
-#endif
-
-#if SDL_DIRECTFB_OPENGL
-
-struct SDL_GLDriverData
-{
-    int gl_active;              /* to stop switching drivers while we have a valid context */
-    int initialized;
-    DirectFB_GLContext *firstgl;        /* linked list */
-
-    /* OpenGL */
-    void (*glFinish) (void);
-    void (*glFlush) (void);
-};
-
-#define OPENGL_REQUIRS_DLOPEN
-#if defined(OPENGL_REQUIRS_DLOPEN) && defined(HAVE_DLOPEN)
-#include <dlfcn.h>
-#define GL_LoadObject(X)    dlopen(X, (RTLD_NOW|RTLD_GLOBAL))
-#define GL_LoadFunction     dlsym
-#define GL_UnloadObject     dlclose
-#else
-#define GL_LoadObject   SDL_LoadObject
-#define GL_LoadFunction SDL_LoadFunction
-#define GL_UnloadObject SDL_UnloadObject
-#endif
-
-static void DirectFB_GL_UnloadLibrary(_THIS);
-
-int
-DirectFB_GL_Initialize(_THIS)
-{
-    if (_this->gl_data) {
-        return 0;
-    }
-
-    _this->gl_data =
-        (struct SDL_GLDriverData *) SDL_calloc(1,
-                                               sizeof(struct
-                                                      SDL_GLDriverData));
-    if (!_this->gl_data) {
-        return SDL_OutOfMemory();
-    }
-    _this->gl_data->initialized = 0;
-
-    ++_this->gl_data->initialized;
-    _this->gl_data->firstgl = NULL;
-
-    if (DirectFB_GL_LoadLibrary(_this, NULL) < 0) {
-        return -1;
-    }
-
-    /* Initialize extensions */
-    /* FIXME needed?
-     * X11_GL_InitExtensions(_this);
-     */
-
-    return 0;
-}
-
-void
-DirectFB_GL_Shutdown(_THIS)
-{
-    if (!_this->gl_data || (--_this->gl_data->initialized > 0)) {
-        return;
-    }
-
-    DirectFB_GL_UnloadLibrary(_this);
-
-    SDL_free(_this->gl_data);
-    _this->gl_data = NULL;
-}
-
-int
-DirectFB_GL_LoadLibrary(_THIS, const char *path)
-{
-    void *handle = NULL;
-
-    SDL_DFB_DEBUG("Loadlibrary : %s\n", path);
-
-    if (_this->gl_data->gl_active) {
-        return SDL_SetError("OpenGL context already created");
-    }
-
-
-    if (path == NULL) {
-        path = SDL_getenv("SDL_OPENGL_LIBRARY");
-        if (path == NULL) {
-            path = "libGL.so.1";
-        }
-    }
-
-    handle = GL_LoadObject(path);
-    if (handle == NULL) {
-        SDL_DFB_ERR("Library not found: %s\n", path);
-        /* SDL_LoadObject() will call SDL_SetError() for us. */
-        return -1;
-    }
-
-    SDL_DFB_DEBUG("Loaded library: %s\n", path);
-
-    _this->gl_config.dll_handle = handle;
-    if (path) {
-        SDL_strlcpy(_this->gl_config.driver_path, path,
-                    SDL_arraysize(_this->gl_config.driver_path));
-    } else {
-        *_this->gl_config.driver_path = '\0';
-    }
-
-    _this->gl_data->glFinish = DirectFB_GL_GetProcAddress(_this, "glFinish");
-    _this->gl_data->glFlush = DirectFB_GL_GetProcAddress(_this, "glFlush");
-
-    return 0;
-}
-
-static void
-DirectFB_GL_UnloadLibrary(_THIS)
-{
- #if 0
-    int ret = GL_UnloadObject(_this->gl_config.dll_handle);
-    if (ret)
-        SDL_DFB_ERR("Error #%d trying to unload library.\n", ret);
-    _this->gl_config.dll_handle = NULL;
-#endif
-    /* Free OpenGL memory */
-    SDL_free(_this->gl_data);
-    _this->gl_data = NULL;
-}
-
-void *
-DirectFB_GL_GetProcAddress(_THIS, const char *proc)
-{
-    void *handle;
-
-    handle = _this->gl_config.dll_handle;
-    return GL_LoadFunction(handle, proc);
-}
-
-SDL_GLContext
-DirectFB_GL_CreateContext(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    DirectFB_GLContext *context;
-
-    SDL_DFB_ALLOC_CLEAR(context, sizeof(DirectFB_GLContext));
-
-    SDL_DFB_CHECKERR(windata->surface->GetGL(windata->surface,
-                                             &context->context));
-
-    if (!context->context)
-        return NULL;
-
-    context->is_locked = 0;
-    context->sdl_window = window;
-
-    context->next = _this->gl_data->firstgl;
-    _this->gl_data->firstgl = context;
-
-    SDL_DFB_CHECK(context->context->Unlock(context->context));
-
-    if (DirectFB_GL_MakeCurrent(_this, window, context) < 0) {
-        DirectFB_GL_DeleteContext(_this, context);
-        return NULL;
-    }
-
-    return context;
-
-  error:
-    return NULL;
-}
-
-int
-DirectFB_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
-{
-    DirectFB_GLContext *ctx = (DirectFB_GLContext *) context;
-    DirectFB_GLContext *p;
-
-    for (p = _this->gl_data->firstgl; p; p = p->next)
-    {
-       if (p->is_locked) {
-         SDL_DFB_CHECKERR(p->context->Unlock(p->context));
-         p->is_locked = 0;
-       }
-
-    }
-
-    if (ctx != NULL) {
-        SDL_DFB_CHECKERR(ctx->context->Lock(ctx->context));
-        ctx->is_locked = 1;
-    }
-
-    return 0;
-  error:
-    return -1;
-}
-
-int
-DirectFB_GL_SetSwapInterval(_THIS, int interval)
-{
-    return SDL_Unsupported();
-}
-
-int
-DirectFB_GL_GetSwapInterval(_THIS)
-{
-    return 0;
-}
-
-int
-DirectFB_GL_SwapWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    DirectFB_GLContext *p;
-
-#if 0
-    if (devdata->glFinish)
-        devdata->glFinish();
-    else if (devdata->glFlush)
-        devdata->glFlush();
-#endif
-
-    for (p = _this->gl_data->firstgl; p != NULL; p = p->next)
-        if (p->sdl_window == window && p->is_locked)
-        {
-            SDL_DFB_CHECKERR(p->context->Unlock(p->context));
-            p->is_locked = 0;
-        }
-
-    SDL_DFB_CHECKERR(windata->window_surface->Flip(windata->window_surface,NULL,  DSFLIP_PIPELINE |DSFLIP_BLIT | DSFLIP_ONSYNC ));
-    return 0;
-  error:
-    return -1;
-}
-
-void
-DirectFB_GL_DeleteContext(_THIS, SDL_GLContext context)
-{
-    DirectFB_GLContext *ctx = (DirectFB_GLContext *) context;
-    DirectFB_GLContext *p;
-
-    if (ctx->is_locked)
-        SDL_DFB_CHECK(ctx->context->Unlock(ctx->context));
-    SDL_DFB_RELEASE(ctx->context);
-
-    for (p = _this->gl_data->firstgl; p && p->next != ctx; p = p->next)
-        ;
-    if (p)
-        p->next = ctx->next;
-    else
-        _this->gl_data->firstgl = ctx->next;
-
-    SDL_DFB_FREE(ctx);
-}
-
-void
-DirectFB_GL_FreeWindowContexts(_THIS, SDL_Window * window)
-{
-    DirectFB_GLContext *p;
-
-    for (p = _this->gl_data->firstgl; p != NULL; p = p->next)
-        if (p->sdl_window == window)
-        {
-            if (p->is_locked)
-                SDL_DFB_CHECK(p->context->Unlock(p->context));
-            SDL_DFB_RELEASE(p->context);
-        }
-}
-
-void
-DirectFB_GL_ReAllocWindowContexts(_THIS, SDL_Window * window)
-{
-    DirectFB_GLContext *p;
-
-    for (p = _this->gl_data->firstgl; p != NULL; p = p->next)
-        if (p->sdl_window == window)
-        {
-            SDL_DFB_WINDOWDATA(window);
-            SDL_DFB_CHECK(windata->surface->GetGL(windata->surface,
-                                             &p->context));
-            if (p->is_locked)
-                SDL_DFB_CHECK(p->context->Lock(p->context));
-            }
-}
-
-void
-DirectFB_GL_DestroyWindowContexts(_THIS, SDL_Window * window)
-{
-    DirectFB_GLContext *p;
-
-    for (p = _this->gl_data->firstgl; p != NULL; p = p->next)
-        if (p->sdl_window == window)
-            DirectFB_GL_DeleteContext(_this, p);
-}
-
-#endif
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 64
src/video/directfb/SDL_DirectFB_opengl.h

@@ -1,64 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-
-#ifndef SDL_directfb_opengl_h_
-#define SDL_directfb_opengl_h_
-
-#include "SDL_DirectFB_video.h"
-
-#if SDL_DIRECTFB_OPENGL
-
-#include "SDL_opengl.h"
-
-typedef struct _DirectFB_GLContext DirectFB_GLContext;
-struct _DirectFB_GLContext
-{
-    IDirectFBGL         *context;
-    DirectFB_GLContext  *next;
-
-    SDL_Window          *sdl_window;
-    int                 is_locked;
-};
-
-/* OpenGL functions */
-extern int DirectFB_GL_Initialize(_THIS);
-extern void DirectFB_GL_Shutdown(_THIS);
-
-extern int DirectFB_GL_LoadLibrary(_THIS, const char *path);
-extern void *DirectFB_GL_GetProcAddress(_THIS, const char *proc);
-extern SDL_GLContext DirectFB_GL_CreateContext(_THIS, SDL_Window * window);
-extern int DirectFB_GL_MakeCurrent(_THIS, SDL_Window * window,
-                                   SDL_GLContext context);
-extern int DirectFB_GL_SetSwapInterval(_THIS, int interval);
-extern int DirectFB_GL_GetSwapInterval(_THIS);
-extern int DirectFB_GL_SwapWindow(_THIS, SDL_Window * window);
-extern void DirectFB_GL_DeleteContext(_THIS, SDL_GLContext context);
-
-extern void DirectFB_GL_FreeWindowContexts(_THIS, SDL_Window * window);
-extern void DirectFB_GL_ReAllocWindowContexts(_THIS, SDL_Window * window);
-extern void DirectFB_GL_DestroyWindowContexts(_THIS, SDL_Window * window);
-
-#endif /* SDL_DIRECTFB_OPENGL */
-
-#endif /* SDL_directfb_opengl_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 1267
src/video/directfb/SDL_DirectFB_render.c

@@ -1,1267 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-#include "SDL_DirectFB_window.h"
-#include "SDL_DirectFB_modes.h"
-
-#include "SDL_syswm.h"
-#include "SDL_DirectFB_shape.h"
-
-#include "../SDL_sysvideo.h"
-#include "../../render/SDL_sysrender.h"
-
-#ifndef DFB_VERSION_ATLEAST
-
-#define DFB_VERSIONNUM(X, Y, Z)                     \
-    ((X)*1000 + (Y)*100 + (Z))
-
-#define DFB_COMPILEDVERSION \
-    DFB_VERSIONNUM(DIRECTFB_MAJOR_VERSION, DIRECTFB_MINOR_VERSION, DIRECTFB_MICRO_VERSION)
-
-#define DFB_VERSION_ATLEAST(X, Y, Z) \
-    (DFB_COMPILEDVERSION >= DFB_VERSIONNUM(X, Y, Z))
-
-#define SDL_DFB_CHECK(x)    x
-
-#endif
-
-/* the following is not yet tested ... */
-#define USE_DISPLAY_PALETTE         (0)
-
-
-#define SDL_DFB_RENDERERDATA(rend) DirectFB_RenderData *renddata = ((rend) ? (DirectFB_RenderData *) (rend)->driverdata : NULL)
-#define SDL_DFB_WINDOWSURFACE(win)  IDirectFBSurface *destsurf = ((DFB_WindowData *) ((win)->driverdata))->surface;
-
-typedef struct
-{
-    SDL_Window *window;
-    DFBSurfaceFlipFlags flipflags;
-    int size_changed;
-    int lastBlendMode;
-    DFBSurfaceBlittingFlags blitFlags;
-    DFBSurfaceDrawingFlags drawFlags;
-    IDirectFBSurface* target;
-} DirectFB_RenderData;
-
-typedef struct
-{
-    IDirectFBSurface *surface;
-    Uint32 format;
-    void *pixels;
-    int pitch;
-    IDirectFBPalette *palette;
-    int isDirty;
-
-    SDL_VideoDisplay *display;      /* only for yuv textures */
-
-#if (DFB_VERSION_ATLEAST(1,2,0))
-    DFBSurfaceRenderOptions render_options;
-#endif
-} DirectFB_TextureData;
-
-static SDL_INLINE void
-SDLtoDFBRect(const SDL_Rect * sr, DFBRectangle * dr)
-{
-    dr->x = sr->x;
-    dr->y = sr->y;
-    dr->h = sr->h;
-    dr->w = sr->w;
-}
-static SDL_INLINE void
-SDLtoDFBRect_Float(const SDL_FRect * sr, DFBRectangle * dr)
-{
-    dr->x = sr->x;
-    dr->y = sr->y;
-    dr->h = sr->h;
-    dr->w = sr->w;
-}
-
-
-static int
-TextureHasAlpha(DirectFB_TextureData * data)
-{
-    /* Drawing primitive ? */
-    if (!data)
-        return 0;
-
-    return (DFB_PIXELFORMAT_HAS_ALPHA(DirectFB_SDLToDFBPixelFormat(data->format)) ? 1 : 0);
-#if 0
-    switch (data->format) {
-    case SDL_PIXELFORMAT_INDEX4LSB:
-    case SDL_PIXELFORMAT_INDEX4MSB:
-    case SDL_PIXELFORMAT_ARGB4444:
-    case SDL_PIXELFORMAT_ARGB1555:
-    case SDL_PIXELFORMAT_ARGB8888:
-    case SDL_PIXELFORMAT_RGBA8888:
-    case SDL_PIXELFORMAT_ABGR8888:
-    case SDL_PIXELFORMAT_BGRA8888:
-    case SDL_PIXELFORMAT_ARGB2101010:
-       return 1;
-    default:
-        return 0;
-    }
-#endif
-}
-
-static SDL_INLINE IDirectFBSurface *get_dfb_surface(SDL_Window *window)
-{
-    SDL_SysWMinfo wm_info;
-    SDL_memset(&wm_info, 0, sizeof(SDL_SysWMinfo));
-
-    SDL_VERSION(&wm_info.version);
-    if (!SDL_GetWindowWMInfo(window, &wm_info)) {
-        return NULL;
-    }
-
-    return wm_info.info.dfb.surface;
-}
-
-static SDL_INLINE IDirectFBWindow *get_dfb_window(SDL_Window *window)
-{
-    SDL_SysWMinfo wm_info;
-    SDL_memset(&wm_info, 0, sizeof(SDL_SysWMinfo));
-
-    SDL_VERSION(&wm_info.version);
-    if (!SDL_GetWindowWMInfo(window, &wm_info)) {
-        return NULL;
-    }
-
-    return wm_info.info.dfb.window;
-}
-
-static void
-SetBlendMode(DirectFB_RenderData * data, int blendMode,
-             DirectFB_TextureData * source)
-{
-    IDirectFBSurface *destsurf = data->target;
-
-    /* FIXME: check for format change */
-    if (1 || data->lastBlendMode != blendMode) {
-        switch (blendMode) {
-        case SDL_BLENDMODE_NONE:
-                                           /**< No blending */
-            data->blitFlags = DSBLIT_NOFX;
-            data->drawFlags = DSDRAW_NOFX;
-            SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_ONE));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_ZERO));
-            break;
-#if 0
-        case SDL_BLENDMODE_MASK:
-            data->blitFlags =  DSBLIT_BLEND_ALPHACHANNEL;
-            data->drawFlags = DSDRAW_BLEND;
-            SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_SRCALPHA));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_INVSRCALPHA));
-            break;
-#endif
-        case SDL_BLENDMODE_BLEND:
-            data->blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
-            data->drawFlags = DSDRAW_BLEND;
-            SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_SRCALPHA));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_INVSRCALPHA));
-            break;
-        case SDL_BLENDMODE_ADD:
-            data->blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
-            data->drawFlags = DSDRAW_BLEND;
-            /* FIXME: SRCALPHA kills performance on radeon ...
-             * It will be cheaper to copy the surface to a temporary surface and premultiply
-             */
-            if (source && TextureHasAlpha(source))
-                SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_SRCALPHA));
-            else
-                SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_ONE));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_ONE));
-            break;
-        case SDL_BLENDMODE_MOD:
-            data->blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
-            data->drawFlags = DSDRAW_BLEND;
-            SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_ZERO));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_SRCCOLOR));
-
-            break;
-        case SDL_BLENDMODE_MUL:
-            data->blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
-            data->drawFlags = DSDRAW_BLEND;
-            SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_DESTCOLOR));
-            SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_INVSRCALPHA));
-
-            break;
-        }
-        data->lastBlendMode = blendMode;
-    }
-}
-
-static int
-PrepareDraw(SDL_Renderer * renderer, const SDL_RenderCommand *cmd)
-{
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-    IDirectFBSurface *destsurf = data->target;
-    Uint8 r = cmd->data.draw.r;
-    Uint8 g = cmd->data.draw.g;
-    Uint8 b = cmd->data.draw.b;
-    Uint8 a = cmd->data.draw.a;
-
-    SetBlendMode(data, cmd->data.draw.blend, NULL);
-    SDL_DFB_CHECKERR(destsurf->SetDrawingFlags(destsurf, data->drawFlags));
-
-    switch (renderer->blendMode) {
-    case SDL_BLENDMODE_NONE:
-    /* case SDL_BLENDMODE_MASK: */
-    case SDL_BLENDMODE_BLEND:
-        break;
-    case SDL_BLENDMODE_ADD:
-    case SDL_BLENDMODE_MOD:
-    case SDL_BLENDMODE_MUL:
-        r = ((int) r * (int) a) / 255;
-        g = ((int) g * (int) a) / 255;
-        b = ((int) b * (int) a) / 255;
-        a = 255;
-        break;
-    case SDL_BLENDMODE_INVALID: break;
-    }
-
-    SDL_DFB_CHECKERR(destsurf->SetColor(destsurf, r, g, b, a));
-    return 0;
-  error:
-    return -1;
-}
-
-static void
-DirectFB_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
-{
-    SDL_DFB_RENDERERDATA(renderer);
-
-    if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
-        /* Rebind the context to the window area and update matrices */
-        /* SDL_CurrentContext = NULL; */
-        /* data->updateSize = SDL_TRUE; */
-        renddata->size_changed = SDL_TRUE;
-   }
-}
-
-static void
-DirectFB_ActivateRenderer(SDL_Renderer * renderer)
-{
-    SDL_DFB_RENDERERDATA(renderer);
-
-    if (renddata->size_changed /* || windata->wm_needs_redraw */) {
-        renddata->size_changed = SDL_FALSE;
-    }
-}
-
-static int
-DirectFB_AcquireVidLayer(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-    SDL_Window *window = renderer->window;
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    SDL_DFB_DEVICEDATA(display->device);
-    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-    DirectFB_TextureData *data = texture->driverdata;
-    DFBDisplayLayerConfig layconf;
-    DFBResult ret;
-
-    if (devdata->use_yuv_direct && (dispdata->vidID >= 0)
-        && (!dispdata->vidIDinuse)
-        && SDL_ISPIXELFORMAT_FOURCC(data->format)) {
-        layconf.flags =
-            DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT |
-            DLCONF_SURFACE_CAPS;
-        layconf.width = texture->w;
-        layconf.height = texture->h;
-        layconf.pixelformat = DirectFB_SDLToDFBPixelFormat(data->format);
-        layconf.surface_caps = DSCAPS_VIDEOONLY | DSCAPS_DOUBLE;
-
-        SDL_DFB_CHECKERR(devdata->dfb->GetDisplayLayer(devdata->dfb,
-                                                       dispdata->vidID,
-                                                       &dispdata->vidlayer));
-        SDL_DFB_CHECKERR(dispdata->
-                         vidlayer->SetCooperativeLevel(dispdata->vidlayer,
-                                                       DLSCL_EXCLUSIVE));
-
-        if (devdata->use_yuv_underlays) {
-            ret = dispdata->vidlayer->SetLevel(dispdata->vidlayer, -1);
-            if (ret != DFB_OK)
-                SDL_DFB_DEBUG("Underlay Setlevel not supported\n");
-        }
-        SDL_DFB_CHECKERR(dispdata->
-                         vidlayer->SetConfiguration(dispdata->vidlayer,
-                                                    &layconf));
-        SDL_DFB_CHECKERR(dispdata->
-                         vidlayer->GetSurface(dispdata->vidlayer,
-                                              &data->surface));
-        dispdata->vidIDinuse = 1;
-        data->display = display;
-        return 0;
-    }
-    return 1;
-  error:
-    if (dispdata->vidlayer) {
-        SDL_DFB_RELEASE(data->surface);
-        SDL_DFB_CHECKERR(dispdata->
-                         vidlayer->SetCooperativeLevel(dispdata->vidlayer,
-                                                       DLSCL_ADMINISTRATIVE));
-        SDL_DFB_RELEASE(dispdata->vidlayer);
-    }
-    return 1;
-}
-
-
-/* Copy the SDL_Surface palette to the DirectFB texture palette */
-void DirectFB_SetTexturePalette(SDL_Renderer *renderer, SDL_Texture *texture, SDL_Palette *pal)
-{
-    int i;
-    DFBColor dfbpal[256];
-    DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata;
-    for (i = 0; i < pal->ncolors; i++) {
-            dfbpal[i].a = pal->colors[i].a;
-            dfbpal[i].r = pal->colors[i].r;
-            dfbpal[i].g = pal->colors[i].g;
-            dfbpal[i].b = pal->colors[i].b;
-    }
-    data->palette->SetEntries(data->palette, dfbpal, pal->ncolors, 0);
-}
-
-static int
-DirectFB_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-    SDL_Window *window = renderer->window;
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    SDL_DFB_DEVICEDATA(display->device);
-    DirectFB_TextureData *data;
-    DFBSurfaceDescription dsc;
-    DFBSurfacePixelFormat pixelformat;
-
-    DirectFB_ActivateRenderer(renderer);
-
-    SDL_DFB_ALLOC_CLEAR(data, sizeof(*data));
-    texture->driverdata = data;
-
-    /* find the right pixelformat */
-    pixelformat = DirectFB_SDLToDFBPixelFormat(texture->format);
-    if (pixelformat == DSPF_UNKNOWN) {
-        SDL_SetError("Unknown pixel format %d", data->format);
-        goto error;
-    }
-
-    data->format = texture->format;
-    data->pitch = texture->w * DFB_BYTES_PER_PIXEL(pixelformat);
-
-    if (DirectFB_AcquireVidLayer(renderer, texture) != 0) {
-        /* fill surface description */
-        dsc.flags =
-            DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
-        dsc.width = texture->w;
-        dsc.height = texture->h;
-        if(texture->format == SDL_PIXELFORMAT_YV12 ||
-           texture->format == SDL_PIXELFORMAT_IYUV) {
-           /* dfb has problems with odd sizes -make them even internally */
-           dsc.width += (dsc.width % 2);
-           dsc.height += (dsc.height % 2);
-        }
-        /* <1.2 Never use DSCAPS_VIDEOONLY here. It kills performance
-         * No DSCAPS_SYSTEMONLY either - let dfb decide
-         * 1.2: DSCAPS_SYSTEMONLY boosts performance by factor ~8
-         * Depends on other settings as well. Let dfb decide.
-         */
-        dsc.caps = DSCAPS_PREMULTIPLIED;
-#if 0
-        if (texture->access == SDL_TEXTUREACCESS_STREAMING)
-            dsc.caps |= DSCAPS_SYSTEMONLY;
-        else
-            dsc.caps |= DSCAPS_VIDEOONLY;
-#endif
-
-        dsc.pixelformat = pixelformat;
-        data->pixels = NULL;
-
-        /* Create the surface */
-        SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc,
-                                                     &data->surface));
-        if (SDL_ISPIXELFORMAT_INDEXED(data->format)
-            && !SDL_ISPIXELFORMAT_FOURCC(data->format)) {
-#if 1
-            SDL_DFB_CHECKERR(data->surface->GetPalette(data->surface, &data->palette));
-#else
-            /* DFB has issues with blitting LUT8 surfaces.
-             * Creating a new palette does not help.
-             */
-            DFBPaletteDescription pal_desc;
-            pal_desc.flags = DPDESC_SIZE; /* | DPDESC_ENTRIES */
-            pal_desc.size = 256;
-            SDL_DFB_CHECKERR(devdata->dfb->CreatePalette(devdata->dfb, &pal_desc,&data->palette));
-            SDL_DFB_CHECKERR(data->surface->SetPalette(data->surface, data->palette));
-#endif
-        }
-
-    }
-#if (DFB_VERSION_ATLEAST(1,2,0))
-    data->render_options = DSRO_NONE;
-#endif
-    if (texture->access == SDL_TEXTUREACCESS_STREAMING) {
-        /* 3 plane YUVs return 1 bpp, but we need more space for other planes */
-        if(texture->format == SDL_PIXELFORMAT_YV12 ||
-           texture->format == SDL_PIXELFORMAT_IYUV) {
-            SDL_DFB_ALLOC_CLEAR(data->pixels, (texture->h * data->pitch  + ((texture->h + texture->h % 2) * (data->pitch + data->pitch % 2) * 2) / 4));
-        } else {
-            SDL_DFB_ALLOC_CLEAR(data->pixels, texture->h * data->pitch);
-        }
-    }
-
-    return 0;
-
-  error:
-    SDL_DFB_RELEASE(data->palette);
-    SDL_DFB_RELEASE(data->surface);
-    SDL_DFB_FREE(texture->driverdata);
-    return -1;
-}
-
-#if 0
-static int
-DirectFB_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-#if (DFB_VERSION_ATLEAST(1,2,0))
-
-    DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata;
-
-    switch (texture->scaleMode) {
-    case SDL_SCALEMODE_NONE:
-    case SDL_SCALEMODE_FAST:
-        data->render_options = DSRO_NONE;
-        break;
-    case SDL_SCALEMODE_SLOW:
-        data->render_options = DSRO_SMOOTH_UPSCALE | DSRO_SMOOTH_DOWNSCALE;
-        break;
-    case SDL_SCALEMODE_BEST:
-        data->render_options =
-            DSRO_SMOOTH_UPSCALE | DSRO_SMOOTH_DOWNSCALE | DSRO_ANTIALIAS;
-        break;
-    default:
-        data->render_options = DSRO_NONE;
-        texture->scaleMode = SDL_SCALEMODE_NONE;
-        return SDL_Unsupported();
-    }
-#endif
-    return 0;
-}
-#endif
-
-static int
-DirectFB_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
-                       const SDL_Rect * rect, const void *pixels, int pitch)
-{
-    DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata;
-    Uint8 *dpixels;
-    int dpitch;
-    Uint8 *src, *dst;
-    int row;
-    size_t length;
-    int bpp = DFB_BYTES_PER_PIXEL(DirectFB_SDLToDFBPixelFormat(texture->format));
-    /* FIXME: SDL_BYTESPERPIXEL(texture->format) broken for yuv yv12 3 planes */
-
-    DirectFB_ActivateRenderer(renderer);
-
-    if ((texture->format == SDL_PIXELFORMAT_YV12) ||
-        (texture->format == SDL_PIXELFORMAT_IYUV)) {
-        bpp = 1;
-    }
-
-    SDL_DFB_CHECKERR(data->surface->Lock(data->surface,
-                                         DSLF_WRITE | DSLF_READ,
-                                         ((void **) &dpixels), &dpitch));
-    src = (Uint8 *) pixels;
-    dst = (Uint8 *) dpixels + rect->y * dpitch + rect->x * bpp;
-    length = rect->w * bpp;
-    for (row = 0; row < rect->h; ++row) {
-        SDL_memcpy(dst, src, length);
-        src += pitch;
-        dst += dpitch;
-    }
-    /* copy other planes for 3 plane formats */
-    if ((texture->format == SDL_PIXELFORMAT_YV12) ||
-        (texture->format == SDL_PIXELFORMAT_IYUV)) {
-        src = (Uint8 *) pixels + texture->h * pitch;
-        dst = (Uint8 *) dpixels + texture->h * dpitch + rect->y * dpitch / 4 + rect->x * bpp / 2;
-        for (row = 0; row < rect->h / 2 + (rect->h & 1); ++row) {
-            SDL_memcpy(dst, src, length / 2);
-            src += pitch / 2;
-            dst += dpitch / 2;
-        }
-        src = (Uint8 *) pixels + texture->h * pitch + texture->h * pitch / 4;
-        dst = (Uint8 *) dpixels + texture->h * dpitch + texture->h * dpitch / 4 + rect->y * dpitch / 4 + rect->x * bpp / 2;
-        for (row = 0; row < rect->h / 2 + (rect->h & 1); ++row) {
-            SDL_memcpy(dst, src, length / 2);
-            src += pitch / 2;
-            dst += dpitch / 2;
-        }
-    }
-    SDL_DFB_CHECKERR(data->surface->Unlock(data->surface));
-    data->isDirty = 0;
-    return 0;
-  error:
-    return 1;
-
-}
-
-static int
-DirectFB_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
-                     const SDL_Rect * rect, void **pixels, int *pitch)
-{
-    DirectFB_TextureData *texturedata =
-        (DirectFB_TextureData *) texture->driverdata;
-
-    DirectFB_ActivateRenderer(renderer);
-
-#if 0
-    if (markDirty) {
-        SDL_AddDirtyRect(&texturedata->dirty, rect);
-    }
-#endif
-
-    if (texturedata->display) {
-        void *fdata;
-        int fpitch;
-
-        SDL_DFB_CHECKERR(texturedata->surface->Lock(texturedata->surface,
-                                                    DSLF_WRITE | DSLF_READ,
-                                                    &fdata, &fpitch));
-        *pitch = fpitch;
-        *pixels = fdata;
-    } else {
-        *pixels =
-            (void *) ((Uint8 *) texturedata->pixels +
-                      rect->y * texturedata->pitch +
-                      rect->x * DFB_BYTES_PER_PIXEL(DirectFB_SDLToDFBPixelFormat(texture->format)));
-        *pitch = texturedata->pitch;
-        texturedata->isDirty = 1;
-    }
-    return 0;
-
-  error:
-    return -1;
-}
-
-static void
-DirectFB_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-    DirectFB_TextureData *texturedata =
-        (DirectFB_TextureData *) texture->driverdata;
-
-    DirectFB_ActivateRenderer(renderer);
-
-    if (texturedata->display) {
-        SDL_DFB_CHECK(texturedata->surface->Unlock(texturedata->surface));
-        texturedata->pixels = NULL;
-    }
-}
-
-static void
-DirectFB_SetTextureScaleMode()
-{
-}
-
-#if 0
-static void
-DirectFB_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
-                      int numrects, const SDL_Rect * rects)
-{
-    DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata;
-    int i;
-
-    for (i = 0; i < numrects; ++i) {
-        SDL_AddDirtyRect(&data->dirty, &rects[i]);
-    }
-}
-#endif
-
-static int DirectFB_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-    DirectFB_TextureData *tex_data = NULL;
-
-    DirectFB_ActivateRenderer(renderer);
-    if (texture) {
-        tex_data = (DirectFB_TextureData *) texture->driverdata;
-        data->target = tex_data->surface;
-    } else {
-        data->target = get_dfb_surface(data->window);
-    }
-    data->lastBlendMode = 0;
-    return 0;
-}
-
-
-static int
-DirectFB_QueueSetViewport(SDL_Renderer * renderer, SDL_RenderCommand *cmd)
-{
-    return 0;  /* nothing to do in this backend. */
-}
-
-static int
-DirectFB_QueueDrawPoints(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
-{
-    const size_t len = count * sizeof (SDL_FPoint);
-    SDL_FPoint *verts = (SDL_FPoint *) SDL_AllocateRenderVertices(renderer, len, 0, &cmd->data.draw.first);
-
-    if (!verts) {
-        return -1;
-    }
-
-    cmd->data.draw.count = count;
-    SDL_memcpy(verts, points, len);
-    return 0;
-}
-
-static int
-DirectFB_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture,
-        const float *xy, int xy_stride, const SDL_Color *color, int color_stride, const float *uv, int uv_stride,
-        int num_vertices, const void *indices, int num_indices, int size_indices,
-        float scale_x, float scale_y)
-{
-    int i;
-    int count = indices ? num_indices : num_vertices;
-    float *verts;
-    int sz = 2 + 4 + (texture ? 2 : 0);
-
-    verts = (float *) SDL_AllocateRenderVertices(renderer, count * sz * sizeof (float), 0, &cmd->data.draw.first);
-    if (!verts) {
-        return -1;
-    }
-
-    cmd->data.draw.count = count;
-    size_indices = indices ? size_indices : 0;
-
-    for (i = 0; i < count; i++) {
-        int j;
-        float *xy_;
-        SDL_Color col_;
-        if (size_indices == 4) {
-            j = ((const Uint32 *)indices)[i];
-        } else if (size_indices == 2) {
-            j = ((const Uint16 *)indices)[i];
-        } else if (size_indices == 1) {
-            j = ((const Uint8 *)indices)[i];
-        } else {
-            j = i;
-        }
-
-        xy_ = (float *)((char*)xy + j * xy_stride);
-        col_ = *(SDL_Color *)((char*)color + j * color_stride);
-
-        *(verts++) = xy_[0] * scale_x;
-        *(verts++) = xy_[1] * scale_y;
-
-        *(verts++) = col_.r;
-        *(verts++) = col_.g;
-        *(verts++) = col_.b;
-        *(verts++) = col_.a;
-
-        if (texture) {
-            float *uv_ = (float *)((char*)uv + j * uv_stride);
-            *(verts++) = uv_[0];
-            *(verts++) = uv_[1];
-        }
-    }
-    return 0;
-}
-
-static int
-DirectFB_QueueFillRects(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_FRect * rects, int count)
-{
-    const size_t len = count * sizeof (SDL_FRect);
-    SDL_FRect *verts = (SDL_FRect *) SDL_AllocateRenderVertices(renderer, len, 0, &cmd->data.draw.first);
-
-    if (!verts) {
-        return -1;
-    }
-
-    cmd->data.draw.count = count;
-    SDL_memcpy(verts, rects, len);
-    return 0;
-}
-
-static int
-DirectFB_QueueCopy(SDL_Renderer * renderer, SDL_RenderCommand *cmd, SDL_Texture * texture,
-             const SDL_Rect * srcrect, const SDL_FRect * dstrect)
-{
-    DFBRectangle *verts = (DFBRectangle *) SDL_AllocateRenderVertices(renderer, 2 * sizeof (DFBRectangle), 0, &cmd->data.draw.first);
-
-    if (!verts) {
-        return -1;
-    }
-
-    cmd->data.draw.count = 1;
-
-    SDLtoDFBRect(srcrect, verts++);
-    SDLtoDFBRect_Float(dstrect, verts);
-
-    return 0;
-}
-
-static int
-DirectFB_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize)
-{
-    /* !!! FIXME: there are probably some good optimization wins in here if someone wants to look it over. */
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-    IDirectFBSurface *destsurf = data->target;
-    DFBRegion clip_region;
-    size_t i;
-
-    DirectFB_ActivateRenderer(renderer);
-
-    SDL_zero(clip_region);  /* in theory, this always gets set before use. */
-
-    while (cmd) {
-        switch (cmd->command) {
-            case SDL_RENDERCMD_SETDRAWCOLOR:
-                break;  /* not used here */
-
-            case SDL_RENDERCMD_SETVIEWPORT: {
-                const SDL_Rect *viewport = &cmd->data.viewport.rect;
-                clip_region.x1 = viewport->x;
-                clip_region.y1 = viewport->y;
-                clip_region.x2 = clip_region.x1 + viewport->w - 1;
-                clip_region.y2 = clip_region.y1 + viewport->h - 1;
-                destsurf->SetClip(destsurf, &clip_region);
-                break;
-            }
-
-            case SDL_RENDERCMD_SETCLIPRECT: {
-                /* !!! FIXME: how does this SetClip interact with the one in SETVIEWPORT? */
-                if (cmd->data.cliprect.enabled) {
-                    const SDL_Rect *rect = &cmd->data.cliprect.rect;
-                    clip_region.x1 = rect->x;
-                    clip_region.x2 = rect->x + rect->w;
-                    clip_region.y1 = rect->y;
-                    clip_region.y2 = rect->y + rect->h;
-                    destsurf->SetClip(destsurf, &clip_region);
-                }
-                break;
-            }
-
-            case SDL_RENDERCMD_CLEAR: {
-                const Uint8 r = cmd->data.color.r;
-                const Uint8 g = cmd->data.color.g;
-                const Uint8 b = cmd->data.color.b;
-                const Uint8 a = cmd->data.color.a;
-                destsurf->Clear(destsurf, r, g, b, a);
-                break;
-            }
-
-            case SDL_RENDERCMD_DRAW_POINTS: {
-                const size_t count = cmd->data.draw.count;
-                const SDL_FPoint *points = (SDL_FPoint *) (((Uint8 *) vertices) + cmd->data.draw.first);
-                PrepareDraw(renderer, cmd);
-                for (i = 0; i < count; i++) {
-                    const int x = points[i].x + clip_region.x1;
-                    const int y = points[i].y + clip_region.y1;
-                    destsurf->DrawLine(destsurf, x, y, x, y);
-                }
-                break;
-            }
-
-            case SDL_RENDERCMD_DRAW_LINES: {
-                const SDL_FPoint *points = (SDL_FPoint *) (((Uint8 *) vertices) + cmd->data.draw.first);
-                const size_t count = cmd->data.draw.count;
-
-                PrepareDraw(renderer, cmd);
-
-                #if (DFB_VERSION_ATLEAST(1,2,0))  /* !!! FIXME: should this be set once, somewhere else? */
-                destsurf->SetRenderOptions(destsurf, DSRO_ANTIALIAS);
-                #endif
-
-                for (i = 0; i < count - 1; i++) {
-                    const int x1 = points[i].x + clip_region.x1;
-                    const int y1 = points[i].y + clip_region.y1;
-                    const int x2 = points[i + 1].x + clip_region.x1;
-                    const int y2 = points[i + 1].y + clip_region.y1;
-                    destsurf->DrawLine(destsurf, x1, y1, x2, y2);
-                }
-                break;
-            }
-
-            case SDL_RENDERCMD_FILL_RECTS: {
-                const SDL_FRect *rects = (SDL_FRect *) (((Uint8 *) vertices) + cmd->data.draw.first);
-                const size_t count = cmd->data.draw.count;
-
-                PrepareDraw(renderer, cmd);
-
-                for (i = 0; i < count; i++, rects++) {
-                    destsurf->FillRectangle(destsurf, rects->x + clip_region.x1, rects->y + clip_region.y1, rects->w, rects->h);
-                }
-                break;
-            }
-
-            case SDL_RENDERCMD_COPY: {
-                SDL_Texture *texture = cmd->data.draw.texture;
-                const Uint8 r = cmd->data.draw.r;
-                const Uint8 g = cmd->data.draw.g;
-                const Uint8 b = cmd->data.draw.b;
-                const Uint8 a = cmd->data.draw.a;
-                DFBRectangle *verts = (DFBRectangle *) (((Uint8 *) vertices) + cmd->data.draw.first);
-                DirectFB_TextureData *texturedata = (DirectFB_TextureData *) texture->driverdata;
-                DFBRectangle *sr = verts++;
-                DFBRectangle *dr = verts;
-
-                dr->x += clip_region.x1;
-                dr->y += clip_region.y1;
-
-                if (texturedata->display) {
-                    int px, py;
-                    SDL_Window *window = renderer->window;
-                    IDirectFBWindow *dfbwin = get_dfb_window(window);
-                    SDL_DFB_WINDOWDATA(window);
-                    SDL_VideoDisplay *display = texturedata->display;
-                    DFB_DisplayData *dispdata = (DFB_DisplayData *) display->driverdata;
-
-                    dispdata->vidlayer->SetSourceRectangle(dispdata->vidlayer, sr->x, sr->y, sr->w, sr->h);
-                    dfbwin->GetPosition(dfbwin, &px, &py);
-                    px += windata->client.x;
-                    py += windata->client.y;
-                    dispdata->vidlayer->SetScreenRectangle(dispdata->vidlayer, px + dr->x, py + dr->y, dr->w, dr->h);
-                } else {
-                    DFBSurfaceBlittingFlags flags = 0;
-                    if (texturedata->isDirty) {
-                        const SDL_Rect rect = { 0, 0, texture->w, texture->h };
-                        DirectFB_UpdateTexture(renderer, texture, &rect, texturedata->pixels, texturedata->pitch);
-                    }
-
-                    if (a != 0xFF) {
-                        flags |= DSBLIT_BLEND_COLORALPHA;
-                    }
-
-                    if ((r & g & b) != 0xFF) {
-                        flags |= DSBLIT_COLORIZE;
-                    }
-
-                    destsurf->SetColor(destsurf, r, g, b, a);
-
-                    /* ???? flags |= DSBLIT_SRC_PREMULTCOLOR; */
-
-                    SetBlendMode(data, texture->blendMode, texturedata);
-
-                    destsurf->SetBlittingFlags(destsurf, data->blitFlags | flags);
-
-#if (DFB_VERSION_ATLEAST(1,2,0))
-                    destsurf->SetRenderOptions(destsurf, texturedata->render_options);
-#endif
-
-                    if (sr->w == dr->w && sr->h == dr->h) {
-                        destsurf->Blit(destsurf, texturedata->surface, sr, dr->x, dr->y);
-                    } else {
-                        destsurf->StretchBlit(destsurf, texturedata->surface, sr, dr);
-                    }
-                }
-                break;
-            }
-
-
-            case SDL_RENDERCMD_GEOMETRY: {
-                const float *verts = (float *) (((Uint8 *) vertices) + cmd->data.draw.first);
-                SDL_Texture *texture = cmd->data.draw.texture;
-                const size_t count = cmd->data.draw.count;
-
-                Uint8 save_r = cmd->data.draw.r;
-                Uint8 save_g = cmd->data.draw.g;
-                Uint8 save_b = cmd->data.draw.b;
-                Uint8 save_a = cmd->data.draw.a;
-
-                int j;
-                for (j = 0; j < count; j += 3)
-                {
-                    float x1, y1, r1, g1, b1, a1, u1, v1;
-                    float x2, y2, r2, g2, b2, a2, u2, v2;
-                    float x3, y3, r3, g3, b3, a3, u3, v3;
-
-                    x1 = *(verts++);
-                    y1 = *(verts++);
-                    r1 = *(verts++);
-                    g1 = *(verts++);
-                    b1 = *(verts++);
-                    a1 = *(verts++);
-                    if (texture) {
-                        u1 = *(verts++);
-                        v1 = *(verts++);
-                    }
-                    x2 = *(verts++);
-                    y2 = *(verts++);
-                    r2 = *(verts++);
-                    g2 = *(verts++);
-                    b2 = *(verts++);
-                    a2 = *(verts++);
-                    if (texture) {
-                        u2 = *(verts++);
-                        v2 = *(verts++);
-                    }
-                    x3 = *(verts++);
-                    y3 = *(verts++);
-                    r3 = *(verts++);
-                    g3 = *(verts++);
-                    b3 = *(verts++);
-                    a3 = *(verts++);
-                    if (texture) {
-                        u3 = *(verts++);
-                        v3 = *(verts++);
-                    }
-
-
-                    if (texture) {
-                        DFBVertex vertices[3];
-
-                        DirectFB_TextureData *texturedata = (DirectFB_TextureData *) texture->driverdata;
-
-                        DFBSurfaceBlittingFlags flags = 0;
-
-                        int r = (r1 + r2 + r3) / 3;
-                        int g = (g1 + g2 + g3) / 3;
-                        int b = (b1 + b2 + b3) / 3;
-                        int a = (a1 + a2 + a3) / 3;
-
-
-                        if (texturedata->isDirty) {
-                            const SDL_Rect rect = { 0, 0, texture->w, texture->h };
-                            DirectFB_UpdateTexture(renderer, texture, &rect, texturedata->pixels, texturedata->pitch);
-                        }
-
-                        if (a != 0xFF) {
-                            flags |= DSBLIT_BLEND_COLORALPHA;
-                        }
-
-                        if ((r & g & b) != 0xFF) {
-                            flags |= DSBLIT_COLORIZE;
-                        }
-
-                        destsurf->SetColor(destsurf, r, g, b, a);
-
-                        /* ???? flags |= DSBLIT_SRC_PREMULTCOLOR; */
-
-                        SetBlendMode(data, texture->blendMode, texturedata);
-
-                        destsurf->SetBlittingFlags(destsurf, data->blitFlags | flags);
-
-#if (DFB_VERSION_ATLEAST(1,2,0))
-                        destsurf->SetRenderOptions(destsurf, texturedata->render_options);
-#endif
-
-                        vertices[0].x = x1;
-                        vertices[0].y = y1;
-                        vertices[0].z = 0;
-                        vertices[0].w = 0;
-                        vertices[0].s = u1;
-                        vertices[0].t = v1;
-
-                        vertices[1].x = x2;
-                        vertices[1].y = y2;
-                        vertices[1].z = 0;
-                        vertices[1].w = 0;
-                        vertices[1].s = u2;
-                        vertices[1].t = v2;
-
-                        vertices[2].x = x3;
-                        vertices[2].y = y3;
-                        vertices[2].z = 0;
-                        vertices[2].w = 0;
-                        vertices[2].s = u3;
-                        vertices[2].t = v3;
-
-                        destsurf->TextureTriangles(destsurf, texturedata->surface, vertices, NULL, 3, DTTF_LIST);
-                    } else {
-                        DFBTriangle tris;
-                        tris.x1 = x1;
-                        tris.y1 = y1;
-                        tris.x2 = x2;
-                        tris.y2 = y2;
-                        tris.x3 = x3;
-                        tris.y3 = y3;
-
-                        cmd->data.draw.r = (r1 + r2 + r3) / 3;
-                        cmd->data.draw.g = (g1 + g2 + g3) / 3;
-                        cmd->data.draw.b = (b1 + b2 + b3) / 3;
-                        cmd->data.draw.a = (a1 + a2 + a3) / 3;
-
-                        PrepareDraw(renderer, cmd);
-
-                        destsurf->FillTriangles(destsurf, &tris, 1);
-                    }
-                }
-
-                cmd->data.draw.r = save_r;
-                cmd->data.draw.g = save_g;
-                cmd->data.draw.b = save_b;
-                cmd->data.draw.a = save_a;
-                break;
-            }
-
-            case SDL_RENDERCMD_COPY_EX: /* unused */
-                break;
-
-            case SDL_RENDERCMD_NO_OP:
-                break;
-        }
-
-        cmd = cmd->next;
-    }
-
-    return 0;
-}
-
-
-static int
-DirectFB_RenderPresent(SDL_Renderer * renderer)
-{
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-    SDL_Window *window = renderer->window;
-    SDL_DFB_WINDOWDATA(window);
-    SDL_ShapeData *shape_data = (window->shaper ? window->shaper->driverdata : NULL);
-
-    DirectFB_ActivateRenderer(renderer);
-
-    if (shape_data && shape_data->surface) {
-        /* saturate the window surface alpha channel */
-        SDL_DFB_CHECK(windata->window_surface->SetSrcBlendFunction(windata->window_surface, DSBF_ONE));
-        SDL_DFB_CHECK(windata->window_surface->SetDstBlendFunction(windata->window_surface, DSBF_ONE));
-        SDL_DFB_CHECK(windata->window_surface->SetDrawingFlags(windata->window_surface, DSDRAW_BLEND));
-        SDL_DFB_CHECK(windata->window_surface->SetColor(windata->window_surface, 0, 0, 0, 0xff));
-        SDL_DFB_CHECK(windata->window_surface->FillRectangle(windata->window_surface, 0,0, windata->size.w, windata->size.h));
-
-        /* blit the mask */
-        SDL_DFB_CHECK(windata->surface->SetSrcBlendFunction(windata->surface, DSBF_DESTCOLOR));
-        SDL_DFB_CHECK(windata->surface->SetDstBlendFunction(windata->surface, DSBF_ZERO));
-        SDL_DFB_CHECK(windata->surface->SetBlittingFlags(windata->surface, DSBLIT_BLEND_ALPHACHANNEL));
-#if (DFB_VERSION_ATLEAST(1,2,0))
-        SDL_DFB_CHECK(windata->surface->SetRenderOptions(windata->surface, DSRO_NONE));
-#endif
-        SDL_DFB_CHECK(windata->surface->Blit(windata->surface, shape_data->surface, NULL, 0, 0));
-    }
-
-    /* Send the data to the display */
-    SDL_DFB_CHECK(windata->window_surface->Flip(windata->window_surface, NULL,
-                                                data->flipflags));
-    return 0;
-}
-
-static void
-DirectFB_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)
-{
-    DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata;
-
-    DirectFB_ActivateRenderer(renderer);
-
-    if (!data) {
-        return;
-    }
-    SDL_DFB_RELEASE(data->palette);
-    SDL_DFB_RELEASE(data->surface);
-    if (data->display) {
-        DFB_DisplayData *dispdata =
-            (DFB_DisplayData *) data->display->driverdata;
-        dispdata->vidIDinuse = 0;
-        /* FIXME: Shouldn't we reset the cooperative level */
-        SDL_DFB_CHECK(dispdata->vidlayer->SetCooperativeLevel(dispdata->vidlayer,
-                                                DLSCL_ADMINISTRATIVE));
-        SDL_DFB_RELEASE(dispdata->vidlayer);
-    }
-    SDL_DFB_FREE(data->pixels);
-    SDL_free(data);
-    texture->driverdata = NULL;
-}
-
-static void
-DirectFB_DestroyRenderer(SDL_Renderer * renderer)
-{
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-#if 0
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(data->window);
-    if (display->palette) {
-        SDL_DelPaletteWatch(display->palette, DisplayPaletteChanged, data);
-    }
-#endif
-
-    SDL_free(data);
-    SDL_free(renderer);
-}
-
-static int
-DirectFB_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect,
-                     Uint32 format, void * pixels, int pitch)
-{
-    Uint32 sdl_format;
-    unsigned char* laypixels;
-    int laypitch;
-    DFBSurfacePixelFormat dfb_format;
-    DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata;
-    IDirectFBSurface *winsurf = data->target;
-
-    DirectFB_ActivateRenderer(renderer);
-
-    winsurf->GetPixelFormat(winsurf, &dfb_format);
-    sdl_format = DirectFB_DFBToSDLPixelFormat(dfb_format);
-    winsurf->Lock(winsurf, DSLF_READ, (void **) &laypixels, &laypitch);
-
-    laypixels += (rect->y * laypitch + rect->x * SDL_BYTESPERPIXEL(sdl_format) );
-    SDL_ConvertPixels(rect->w, rect->h,
-                      sdl_format, laypixels, laypitch,
-                      format, pixels, pitch);
-
-    winsurf->Unlock(winsurf);
-
-    return 0;
-}
-
-#if 0
-static int
-DirectFB_RenderWritePixels(SDL_Renderer * renderer, const SDL_Rect * rect,
-                      Uint32 format, const void * pixels, int pitch)
-{
-    SDL_Window *window = renderer->window;
-    SDL_DFB_WINDOWDATA(window);
-    Uint32 sdl_format;
-    unsigned char* laypixels;
-    int laypitch;
-    DFBSurfacePixelFormat dfb_format;
-
-    SDL_DFB_CHECK(windata->surface->GetPixelFormat(windata->surface, &dfb_format));
-    sdl_format = DirectFB_DFBToSDLPixelFormat(dfb_format);
-
-    SDL_DFB_CHECK(windata->surface->Lock(windata->surface, DSLF_WRITE, (void **) &laypixels, &laypitch));
-
-    laypixels += (rect->y * laypitch + rect->x * SDL_BYTESPERPIXEL(sdl_format) );
-    SDL_ConvertPixels(rect->w, rect->h,
-                      format, pixels, pitch,
-                      sdl_format, laypixels, laypitch);
-
-    SDL_DFB_CHECK(windata->surface->Unlock(windata->surface));
-
-    return 0;
-}
-#endif
-
-
-SDL_Renderer *
-DirectFB_CreateRenderer(SDL_Window * window, Uint32 flags)
-{
-    IDirectFBSurface *winsurf = get_dfb_surface(window);
-    /*SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);*/
-    SDL_Renderer *renderer = NULL;
-    DirectFB_RenderData *data = NULL;
-    DFBSurfaceCapabilities scaps;
-
-    if (!winsurf) {
-        return NULL;
-    }
-
-    SDL_DFB_ALLOC_CLEAR(renderer, sizeof(*renderer));
-    SDL_DFB_ALLOC_CLEAR(data, sizeof(*data));
-
-    renderer->WindowEvent = DirectFB_WindowEvent;
-    renderer->CreateTexture = DirectFB_CreateTexture;
-    renderer->UpdateTexture = DirectFB_UpdateTexture;
-    renderer->LockTexture = DirectFB_LockTexture;
-    renderer->UnlockTexture = DirectFB_UnlockTexture;
-    renderer->SetTextureScaleMode = DirectFB_SetTextureScaleMode;
-    renderer->QueueSetViewport = DirectFB_QueueSetViewport;
-    renderer->QueueSetDrawColor = DirectFB_QueueSetViewport;  /* SetViewport and SetDrawColor are (currently) no-ops. */
-    renderer->QueueDrawPoints = DirectFB_QueueDrawPoints;
-    renderer->QueueDrawLines = DirectFB_QueueDrawPoints;  /* lines and points queue vertices the same way. */
-    renderer->QueueGeometry = DirectFB_QueueGeometry;
-    renderer->QueueFillRects = DirectFB_QueueFillRects;
-    renderer->QueueCopy = DirectFB_QueueCopy;
-    renderer->RunCommandQueue = DirectFB_RunCommandQueue;
-    renderer->RenderPresent = DirectFB_RenderPresent;
-
-    /* FIXME: Yet to be tested */
-    renderer->RenderReadPixels = DirectFB_RenderReadPixels;
-    /* renderer->RenderWritePixels = DirectFB_RenderWritePixels; */
-
-    renderer->DestroyTexture = DirectFB_DestroyTexture;
-    renderer->DestroyRenderer = DirectFB_DestroyRenderer;
-    renderer->SetRenderTarget = DirectFB_SetRenderTarget;
-
-    renderer->info = DirectFB_RenderDriver.info;
-    renderer->window = window;      /* SDL window */
-    renderer->driverdata = data;
-
-    renderer->info.flags =
-        SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
-
-    data->window = window;
-    data->target = winsurf;
-
-    data->flipflags = DSFLIP_PIPELINE | DSFLIP_BLIT;
-
-    if (flags & SDL_RENDERER_PRESENTVSYNC) {
-        data->flipflags |= DSFLIP_WAITFORSYNC | DSFLIP_ONSYNC;
-        renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
-    } else
-        data->flipflags |= DSFLIP_ONSYNC;
-
-    SDL_DFB_CHECKERR(winsurf->GetCapabilities(winsurf, &scaps));
-
-#if 0
-    if (scaps & DSCAPS_DOUBLE)
-        renderer->info.flags |= SDL_RENDERER_PRESENTFLIP2;
-    else if (scaps & DSCAPS_TRIPLE)
-        renderer->info.flags |= SDL_RENDERER_PRESENTFLIP3;
-    else
-        renderer->info.flags |= SDL_RENDERER_SINGLEBUFFER;
-#endif
-
-    DirectFB_SetSupportedPixelFormats(&renderer->info);
-
-#if 0
-    /* Set up a palette watch on the display palette */
-    if (display-> palette) {
-        SDL_AddPaletteWatch(display->palette, DisplayPaletteChanged, data);
-    }
-#endif
-
-    return renderer;
-
-  error:
-    SDL_DFB_FREE(renderer);
-    SDL_DFB_FREE(data);
-    return NULL;
-}
-
-
-SDL_RenderDriver DirectFB_RenderDriver = {
-    DirectFB_CreateRenderer,
-    {
-     "directfb",
-     (SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED),
-     /* (SDL_TEXTUREMODULATE_NONE | SDL_TEXTUREMODULATE_COLOR |
-      SDL_TEXTUREMODULATE_ALPHA),
-      (SDL_BLENDMODE_NONE | SDL_BLENDMODE_MASK | SDL_BLENDMODE_BLEND |
-      SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD),
-     (SDL_SCALEMODE_NONE | SDL_SCALEMODE_FAST |
-      SDL_SCALEMODE_SLOW | SDL_SCALEMODE_BEST), */
-     0,
-     {
-             /* formats filled in later */
-     },
-     0,
-     0}
-};
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 25
src/video/directfb/SDL_DirectFB_render.h

@@ -1,25 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-
-/* SDL surface based renderer implementation */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 138
src/video/directfb/SDL_DirectFB_shape.c

@@ -1,138 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_shape.h"
-#include "SDL_DirectFB_window.h"
-
-#include "../SDL_shape_internals.h"
-
-SDL_WindowShaper*
-DirectFB_CreateShaper(SDL_Window* window) {
-    SDL_WindowShaper* result = NULL;
-    SDL_ShapeData* data;
-    int resized_properly;
-
-    result = SDL_malloc(sizeof(SDL_WindowShaper));
-    if (!result) {
-        SDL_OutOfMemory();
-        return NULL;
-    }
-    result->window = window;
-    result->mode.mode = ShapeModeDefault;
-    result->mode.parameters.binarizationCutoff = 1;
-    result->userx = result->usery = 0;
-    data = SDL_malloc(sizeof(SDL_ShapeData));
-    if (!data) {
-        SDL_free(result);
-        SDL_OutOfMemory();
-        return NULL;
-    }
-    result->driverdata = data;
-    data->surface = NULL;
-    window->shaper = result;
-    resized_properly = DirectFB_ResizeWindowShape(window);
-    SDL_assert(resized_properly == 0);
-
-    return result;
-}
-
-int
-DirectFB_ResizeWindowShape(SDL_Window* window) {
-    SDL_ShapeData* data = window->shaper->driverdata;
-    SDL_assert(data != NULL);
-
-    if (window->x != -1000)
-    {
-        window->shaper->userx = window->x;
-        window->shaper->usery = window->y;
-    }
-    SDL_SetWindowPosition(window,-1000,-1000);
-
-    return 0;
-}
-
-int
-DirectFB_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode) {
-
-    if(shaper == NULL || shape == NULL || shaper->driverdata == NULL)
-        return -1;
-    if(shape->format->Amask == 0 && SDL_SHAPEMODEALPHA(shape_mode->mode))
-        return -2;
-    if(shape->w != shaper->window->w || shape->h != shaper->window->h)
-        return -3;
-
-    {
-        SDL_VideoDisplay *display = SDL_GetDisplayForWindow(shaper->window);
-        SDL_DFB_DEVICEDATA(display->device);
-        Uint32 *pixels;
-        Sint32 pitch;
-        Uint32 h,w;
-        Uint8  *src, *bitmap;
-        DFBSurfaceDescription dsc;
-
-        SDL_ShapeData *data = shaper->driverdata;
-
-        SDL_DFB_RELEASE(data->surface);
-
-        dsc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
-        dsc.width = shape->w;
-        dsc.height = shape->h;
-        dsc.caps = DSCAPS_PREMULTIPLIED;
-        dsc.pixelformat = DSPF_ARGB;
-
-        SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc, &data->surface));
-
-        /* Assume that shaper->alphacutoff already has a value, because SDL_SetWindowShape() should have given it one. */
-        SDL_CalculateShapeBitmap(shaper->mode, shape, bitmap, 1);
-
-        src = bitmap;
-
-        SDL_DFB_CHECK(data->surface->Lock(data->surface, DSLF_WRITE | DSLF_READ, (void **) &pixels, &pitch));
-
-        h = shaper->window->h;
-        while (h--) {
-            for (w = 0; w < shaper->window->w; w++) {
-                if (*src)
-                    pixels[w] = 0xFFFFFFFF;
-                else
-                    pixels[w] = 0;
-                src++;
-
-            }
-            pixels += (pitch >> 2);
-        }
-        SDL_DFB_CHECK(data->surface->Unlock(data->surface));
-        SDL_DFB_FREE(bitmap);
-
-        /* FIXME: Need to call this here - Big ?? */
-        DirectFB_WM_RedrawLayout(SDL_GetDisplayForWindow(shaper->window)->device, shaper->window);
-    }
-
-    return 0;
-error:
-    return -1;
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 38
src/video/directfb/SDL_DirectFB_shape.h

@@ -1,38 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_DirectFB_shape_h_
-#define SDL_DirectFB_shape_h_
-
-#include <directfb.h>
-
-#include "../SDL_sysvideo.h"
-#include "SDL_shape.h"
-
-typedef struct {
-    IDirectFBSurface *surface;
-} SDL_ShapeData;
-
-extern SDL_WindowShaper* DirectFB_CreateShaper(SDL_Window* window);
-extern int DirectFB_ResizeWindowShape(SDL_Window* window);
-extern int DirectFB_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shapeMode);
-
-#endif /* SDL_DirectFB_shape_h_ */

+ 0 - 418
src/video/directfb/SDL_DirectFB_video.c

@@ -1,418 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-/*
- * #include "SDL_DirectFB_keyboard.h"
- */
-#include "SDL_DirectFB_modes.h"
-#include "SDL_DirectFB_opengl.h"
-#include "SDL_DirectFB_vulkan.h"
-#include "SDL_DirectFB_window.h"
-#include "SDL_DirectFB_WM.h"
-
-
-/* DirectFB video driver implementation.
-*/
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/mman.h>
-
-#include <directfb.h>
-#include <directfb_version.h>
-#include <directfb_strings.h>
-
-#include "SDL_video.h"
-#include "SDL_mouse.h"
-#include "../SDL_sysvideo.h"
-#include "../SDL_pixels_c.h"
-#include "../../events/SDL_events_c.h"
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_events.h"
-#include "SDL_DirectFB_render.h"
-#include "SDL_DirectFB_mouse.h"
-#include "SDL_DirectFB_shape.h"
-
-
-#include "SDL_DirectFB_dyn.h"
-
-/* Initialization/Query functions */
-static int DirectFB_VideoInit(_THIS);
-static void DirectFB_VideoQuit(_THIS);
-
-static SDL_VideoDevice *DirectFB_CreateDevice(void);
-
-VideoBootStrap DirectFB_bootstrap = {
-    "directfb", "DirectFB",
-    DirectFB_CreateDevice
-};
-
-static const DirectFBSurfaceDrawingFlagsNames(drawing_flags);
-static const DirectFBSurfaceBlittingFlagsNames(blitting_flags);
-static const DirectFBAccelerationMaskNames(acceleration_mask);
-
-/* DirectFB driver bootstrap functions */
-
-static void
-DirectFB_DeleteDevice(SDL_VideoDevice * device)
-{
-    SDL_DirectFB_UnLoadLibrary();
-    SDL_DFB_FREE(device->driverdata);
-    SDL_DFB_FREE(device);
-}
-
-static SDL_VideoDevice *
-DirectFB_CreateDevice(void)
-{
-    SDL_VideoDevice *device;
-
-    if (!SDL_DirectFB_LoadLibrary()) {
-        return NULL;
-    }
-
-    /* Initialize all variables that we clean on shutdown */
-    SDL_DFB_ALLOC_CLEAR(device, sizeof(SDL_VideoDevice));
-
-    /* Set the function pointers */
-    device->VideoInit = DirectFB_VideoInit;
-    device->VideoQuit = DirectFB_VideoQuit;
-    device->GetDisplayModes = DirectFB_GetDisplayModes;
-    device->SetDisplayMode = DirectFB_SetDisplayMode;
-    device->PumpEvents = DirectFB_PumpEventsWindow;
-    device->CreateSDLWindow = DirectFB_CreateWindow;
-    device->CreateSDLWindowFrom = DirectFB_CreateWindowFrom;
-    device->SetWindowTitle = DirectFB_SetWindowTitle;
-    device->SetWindowIcon = DirectFB_SetWindowIcon;
-    device->SetWindowPosition = DirectFB_SetWindowPosition;
-    device->SetWindowSize = DirectFB_SetWindowSize;
-    device->SetWindowOpacity = DirectFB_SetWindowOpacity;
-    device->ShowWindow = DirectFB_ShowWindow;
-    device->HideWindow = DirectFB_HideWindow;
-    device->RaiseWindow = DirectFB_RaiseWindow;
-    device->MaximizeWindow = DirectFB_MaximizeWindow;
-    device->MinimizeWindow = DirectFB_MinimizeWindow;
-    device->RestoreWindow = DirectFB_RestoreWindow;
-    device->SetWindowMouseGrab = DirectFB_SetWindowMouseGrab;
-    device->SetWindowKeyboardGrab = DirectFB_SetWindowKeyboardGrab;
-    device->DestroyWindow = DirectFB_DestroyWindow;
-    device->GetWindowWMInfo = DirectFB_GetWindowWMInfo;
-
-    /* !!! FIXME: implement SetWindowBordered */
-
-#if SDL_DIRECTFB_OPENGL
-    device->GL_LoadLibrary = DirectFB_GL_LoadLibrary;
-    device->GL_GetProcAddress = DirectFB_GL_GetProcAddress;
-    device->GL_MakeCurrent = DirectFB_GL_MakeCurrent;
-
-    device->GL_CreateContext = DirectFB_GL_CreateContext;
-    device->GL_SetSwapInterval = DirectFB_GL_SetSwapInterval;
-    device->GL_GetSwapInterval = DirectFB_GL_GetSwapInterval;
-    device->GL_SwapWindow = DirectFB_GL_SwapWindow;
-    device->GL_DeleteContext = DirectFB_GL_DeleteContext;
-
-#endif
-
-    /* Shaped window support */
-    device->shape_driver.CreateShaper = DirectFB_CreateShaper;
-    device->shape_driver.SetWindowShape = DirectFB_SetWindowShape;
-    device->shape_driver.ResizeWindowShape = DirectFB_ResizeWindowShape;
-
-#if SDL_VIDEO_VULKAN
-    device->Vulkan_LoadLibrary = DirectFB_Vulkan_LoadLibrary;
-    device->Vulkan_UnloadLibrary = DirectFB_Vulkan_UnloadLibrary;
-    device->Vulkan_GetInstanceExtensions = DirectFB_Vulkan_GetInstanceExtensions;
-    device->Vulkan_CreateSurface = DirectFB_Vulkan_CreateSurface;
-#endif
-
-    device->free = DirectFB_DeleteDevice;
-
-    return device;
-  error:
-    if (device)
-        SDL_free(device);
-    return (0);
-}
-
-static void
-DirectFB_DeviceInformation(IDirectFB * dfb)
-{
-    DFBGraphicsDeviceDescription desc;
-    int n;
-
-    dfb->GetDeviceDescription(dfb, &desc);
-
-    SDL_DFB_LOG( "DirectFB Device Information");
-    SDL_DFB_LOG( "===========================");
-    SDL_DFB_LOG( "Name:           %s", desc.name);
-    SDL_DFB_LOG( "Vendor:         %s", desc.vendor);
-    SDL_DFB_LOG( "Driver Name:    %s", desc.driver.name);
-    SDL_DFB_LOG( "Driver Vendor:  %s", desc.driver.vendor);
-    SDL_DFB_LOG( "Driver Version: %d.%d", desc.driver.major,
-            desc.driver.minor);
-
-    SDL_DFB_LOG( "Video memory:   %d", desc.video_memory);
-
-    SDL_DFB_LOG( "Blitting flags:");
-    for (n = 0; blitting_flags[n].flag; n++) {
-        if (desc.blitting_flags & blitting_flags[n].flag)
-            SDL_DFB_LOG( "    %s", blitting_flags[n].name);
-    }
-
-    SDL_DFB_LOG( "Drawing flags:");
-    for (n = 0; drawing_flags[n].flag; n++) {
-        if (desc.drawing_flags & drawing_flags[n].flag)
-            SDL_DFB_LOG( "    %s", drawing_flags[n].name);
-    }
-
-
-    SDL_DFB_LOG( "Acceleration flags:");
-    for (n = 0; acceleration_mask[n].mask; n++) {
-        if (desc.acceleration_mask & acceleration_mask[n].mask)
-            SDL_DFB_LOG( "    %s", acceleration_mask[n].name);
-    }
-
-
-}
-
-static int readBoolEnv(const char *env_name, int def_val)
-{
-    char *stemp;
-
-    stemp = SDL_getenv(env_name);
-    if (stemp)
-        return SDL_atoi(stemp);
-    else
-        return def_val;
-}
-
-static int
-DirectFB_VideoInit(_THIS)
-{
-    IDirectFB *dfb = NULL;
-    DFB_DeviceData *devdata = NULL;
-    DFBResult ret;
-
-    SDL_DFB_ALLOC_CLEAR(devdata, sizeof(*devdata));
-
-    SDL_DFB_CHECKERR(DirectFBInit(NULL, NULL));
-
-    /* avoid switching to the framebuffer when we
-     * are running X11 */
-    ret = readBoolEnv(DFBENV_USE_X11_CHECK , 1);
-    if (ret) {
-        if (SDL_getenv("DISPLAY"))
-            DirectFBSetOption("system", "x11");
-        else
-            DirectFBSetOption("disable-module", "x11input");
-    }
-
-    devdata->use_linux_input = readBoolEnv(DFBENV_USE_LINUX_INPUT, 1);       /* default: on */
-
-    if (!devdata->use_linux_input)
-    {
-        SDL_DFB_LOG("Disabling linux input\n");
-        DirectFBSetOption("disable-module", "linux_input");
-    }
-
-    SDL_DFB_CHECKERR(DirectFBCreate(&dfb));
-
-    DirectFB_DeviceInformation(dfb);
-
-    devdata->use_yuv_underlays = readBoolEnv(DFBENV_USE_YUV_UNDERLAY, 0);     /* default: off */
-    devdata->use_yuv_direct = readBoolEnv(DFBENV_USE_YUV_DIRECT, 0);      /* default is off! */
-
-    /* Create global Eventbuffer for axis events */
-    if (devdata->use_linux_input) {
-        SDL_DFB_CHECKERR(dfb->CreateInputEventBuffer(dfb, DICAPS_ALL,
-                                                     DFB_TRUE,
-                                                     &devdata->events));
-    } else {
-        SDL_DFB_CHECKERR(dfb->CreateInputEventBuffer(dfb, DICAPS_AXES
-                                                     /* DICAPS_ALL */ ,
-                                                     DFB_TRUE,
-                                                     &devdata->events));
-    }
-
-    /* simple window manager support */
-    devdata->has_own_wm = readBoolEnv(DFBENV_USE_WM, 0);
-
-    devdata->initialized = 1;
-
-    devdata->dfb = dfb;
-    devdata->firstwin = NULL;
-
-    _this->driverdata = devdata;
-
-    DirectFB_InitModes(_this);
-
-#if SDL_DIRECTFB_OPENGL
-    DirectFB_GL_Initialize(_this);
-#endif
-
-    DirectFB_InitMouse(_this);
-    DirectFB_InitKeyboard(_this);
-
-    return 0;
-
-
-  error:
-    SDL_DFB_FREE(devdata);
-    SDL_DFB_RELEASE(dfb);
-    return -1;
-}
-
-static void
-DirectFB_VideoQuit(_THIS)
-{
-    DFB_DeviceData *devdata = (DFB_DeviceData *) _this->driverdata;
-
-    DirectFB_QuitModes(_this);
-    DirectFB_QuitKeyboard(_this);
-    DirectFB_QuitMouse(_this);
-
-    devdata->events->Reset(devdata->events);
-    SDL_DFB_RELEASE(devdata->events);
-    SDL_DFB_RELEASE(devdata->dfb);
-
-#if SDL_DIRECTFB_OPENGL
-    DirectFB_GL_Shutdown(_this);
-#endif
-
-    devdata->initialized = 0;
-}
-
-/* DirectFB driver general support functions */
-
-static const struct {
-    DFBSurfacePixelFormat dfb;
-    Uint32 sdl;
-} pixelformat_tab[] =
-{
-    { DSPF_RGB32, SDL_PIXELFORMAT_RGB888 },             /* 24 bit RGB (4 byte, nothing@24, red 8@16, green 8@8, blue 8@0) */
-    { DSPF_ARGB, SDL_PIXELFORMAT_ARGB8888 },            /* 32 bit ARGB (4 byte, alpha 8@24, red 8@16, green 8@8, blue 8@0) */
-    { DSPF_RGB16, SDL_PIXELFORMAT_RGB565 },             /* 16 bit RGB (2 byte, red 5@11, green 6@5, blue 5@0) */
-    { DSPF_RGB332, SDL_PIXELFORMAT_RGB332 },            /* 8 bit RGB (1 byte, red 3@5, green 3@2, blue 2@0) */
-    { DSPF_ARGB4444, SDL_PIXELFORMAT_ARGB4444 },        /* 16 bit ARGB (2 byte, alpha 4@12, red 4@8, green 4@4, blue 4@0) */
-    { DSPF_ARGB1555, SDL_PIXELFORMAT_ARGB1555 },        /* 16 bit ARGB (2 byte, alpha 1@15, red 5@10, green 5@5, blue 5@0) */
-    { DSPF_RGB24, SDL_PIXELFORMAT_RGB24 },              /* 24 bit RGB (3 byte, red 8@16, green 8@8, blue 8@0) */
-    { DSPF_RGB444, SDL_PIXELFORMAT_RGB444 },            /* 16 bit RGB (2 byte, nothing @12, red 4@8, green 4@4, blue 4@0) */
-    { DSPF_YV12, SDL_PIXELFORMAT_YV12 },                /* 12 bit YUV (8 bit Y plane followed by 8 bit quarter size V/U planes) */
-    { DSPF_I420,SDL_PIXELFORMAT_IYUV },                 /* 12 bit YUV (8 bit Y plane followed by 8 bit quarter size U/V planes) */
-    { DSPF_YUY2, SDL_PIXELFORMAT_YUY2 },                /* 16 bit YUV (4 byte/ 2 pixel, macropixel contains CbYCrY [31:0]) */
-    { DSPF_UYVY, SDL_PIXELFORMAT_UYVY },                /* 16 bit YUV (4 byte/ 2 pixel, macropixel contains YCbYCr [31:0]) */
-    { DSPF_RGB555, SDL_PIXELFORMAT_RGB555 },            /* 16 bit RGB (2 byte, nothing @15, red 5@10, green 5@5, blue 5@0) */
-#if (DFB_VERSION_ATLEAST(1,5,0))
-    { DSPF_ABGR, SDL_PIXELFORMAT_ABGR8888 },            /* 32 bit ABGR (4  byte, alpha 8@24, blue 8@16, green 8@8, red 8@0) */
-#endif
-#if (ENABLE_LUT8)
-    { DSPF_LUT8, SDL_PIXELFORMAT_INDEX8 },              /* 8 bit LUT (8 bit color and alpha lookup from palette) */
-#endif
-
-#if (DFB_VERSION_ATLEAST(1,2,0))
-    { DSPF_BGR555, SDL_PIXELFORMAT_BGR555 },            /* 16 bit BGR (2 byte, nothing @15, blue 5@10, green 5@5, red 5@0) */
-#else
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR555 },
-#endif
-
-    /* Pfff ... nonmatching formats follow */
-
-    { DSPF_ALUT44, SDL_PIXELFORMAT_UNKNOWN },           /* 8 bit ALUT (1 byte, alpha 4@4, color lookup 4@0) */
-    { DSPF_A8, SDL_PIXELFORMAT_UNKNOWN },               /*  8 bit alpha (1 byte, alpha 8@0), e.g. anti-aliased glyphs */
-    { DSPF_AiRGB, SDL_PIXELFORMAT_UNKNOWN },            /*  32 bit ARGB (4 byte, inv. alpha 8@24, red 8@16, green 8@8, blue 8@0) */
-    { DSPF_A1, SDL_PIXELFORMAT_UNKNOWN },               /*  1 bit alpha (1 byte/ 8 pixel, most significant bit used first) */
-    { DSPF_NV12, SDL_PIXELFORMAT_UNKNOWN },             /*  12 bit YUV (8 bit Y plane followed by one 16 bit quarter size CbCr [15:0] plane) */
-    { DSPF_NV16, SDL_PIXELFORMAT_UNKNOWN },             /*  16 bit YUV (8 bit Y plane followed by one 16 bit half width CbCr [15:0] plane) */
-    { DSPF_ARGB2554, SDL_PIXELFORMAT_UNKNOWN },         /*  16 bit ARGB (2 byte, alpha 2@14, red 5@9, green 5@4, blue 4@0) */
-    { DSPF_NV21, SDL_PIXELFORMAT_UNKNOWN },             /*  12 bit YUV (8 bit Y plane followed by one 16 bit quarter size CrCb [15:0] plane) */
-    { DSPF_AYUV, SDL_PIXELFORMAT_UNKNOWN },             /*  32 bit AYUV (4 byte, alpha 8@24, Y 8@16, Cb 8@8, Cr 8@0) */
-    { DSPF_A4, SDL_PIXELFORMAT_UNKNOWN },               /*  4 bit alpha (1 byte/ 2 pixel, more significant nibble used first) */
-    { DSPF_ARGB1666, SDL_PIXELFORMAT_UNKNOWN },         /*  1 bit alpha (3 byte/ alpha 1@18, red 6@16, green 6@6, blue 6@0) */
-    { DSPF_ARGB6666, SDL_PIXELFORMAT_UNKNOWN },         /*  6 bit alpha (3 byte/ alpha 6@18, red 6@16, green 6@6, blue 6@0) */
-    { DSPF_RGB18, SDL_PIXELFORMAT_UNKNOWN },            /*  6 bit RGB (3 byte/ red 6@16, green 6@6, blue 6@0) */
-    { DSPF_LUT2, SDL_PIXELFORMAT_UNKNOWN },             /*  2 bit LUT (1 byte/ 4 pixel, 2 bit color and alpha lookup from palette) */
-
-#if (DFB_VERSION_ATLEAST(1,3,0))
-    { DSPF_RGBA4444, SDL_PIXELFORMAT_UNKNOWN },         /* 16 bit RGBA (2 byte, red 4@12, green 4@8, blue 4@4, alpha 4@0) */
-#endif
-
-#if (DFB_VERSION_ATLEAST(1,4,3))
-    { DSPF_RGBA5551, SDL_PIXELFORMAT_UNKNOWN },         /*  16 bit RGBA (2 byte, red 5@11, green 5@6, blue 5@1, alpha 1@0) */
-    { DSPF_YUV444P, SDL_PIXELFORMAT_UNKNOWN },          /*  24 bit full YUV planar (8 bit Y plane followed by an 8 bit Cb and an 8 bit Cr plane) */
-    { DSPF_ARGB8565, SDL_PIXELFORMAT_UNKNOWN },         /*  24 bit ARGB (3 byte, alpha 8@16, red 5@11, green 6@5, blue 5@0) */
-    { DSPF_AVYU, SDL_PIXELFORMAT_UNKNOWN },             /*  32 bit AVYU 4:4:4 (4 byte, alpha 8@24, Cr 8@16, Y 8@8, Cb 8@0) */
-    { DSPF_VYU, SDL_PIXELFORMAT_UNKNOWN },              /*  24 bit VYU 4:4:4 (3 byte, Cr 8@16, Y 8@8, Cb 8@0)  */
-#endif
-
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX1LSB },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX1MSB },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX4LSB },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX4MSB },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR24 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR888 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_RGBA8888 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGRA8888 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_ARGB2101010 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_ABGR4444 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_ABGR1555 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR565 },
-    { DSPF_UNKNOWN, SDL_PIXELFORMAT_YVYU },                        /**< Packed mode: Y0+V0+Y1+U0 (1 pla */
-};
-
-Uint32
-DirectFB_DFBToSDLPixelFormat(DFBSurfacePixelFormat pixelformat)
-{
-    int i;
-
-    for (i=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
-        if (pixelformat_tab[i].dfb == pixelformat)
-        {
-            return pixelformat_tab[i].sdl;
-        }
-    return SDL_PIXELFORMAT_UNKNOWN;
-}
-
-DFBSurfacePixelFormat
-DirectFB_SDLToDFBPixelFormat(Uint32 format)
-{
-    int i;
-
-    for (i=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
-        if (pixelformat_tab[i].sdl == format)
-        {
-            return pixelformat_tab[i].dfb;
-        }
-    return DSPF_UNKNOWN;
-}
-
-void DirectFB_SetSupportedPixelFormats(SDL_RendererInfo* ri)
-{
-    int i, j;
-
-    for (i=0, j=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
-        if (pixelformat_tab[i].sdl != SDL_PIXELFORMAT_UNKNOWN)
-            ri->texture_formats[j++] = pixelformat_tab[i].sdl;
-    ri->num_texture_formats = j;
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 165
src/video/directfb/SDL_DirectFB_video.h

@@ -1,165 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_DirectFB_video_h_
-#define SDL_DirectFB_video_h_
-
-#include <directfb.h>
-#include <directfb_version.h>
-
-#include "../SDL_sysvideo.h"
-#include "SDL_scancode.h"
-#include "SDL_render.h"
-
-
-#define DFB_VERSIONNUM(X, Y, Z)                     \
-    ((X)*1000 + (Y)*100 + (Z))
-
-#define DFB_COMPILEDVERSION \
-    DFB_VERSIONNUM(DIRECTFB_MAJOR_VERSION, DIRECTFB_MINOR_VERSION, DIRECTFB_MICRO_VERSION)
-
-#define DFB_VERSION_ATLEAST(X, Y, Z) \
-    (DFB_COMPILEDVERSION >= DFB_VERSIONNUM(X, Y, Z))
-
-#if (DFB_VERSION_ATLEAST(1,0,0))
-#ifdef SDL_VIDEO_OPENGL
-#define SDL_DIRECTFB_OPENGL 1
-#endif
-#else
-#error "SDL_DIRECTFB: Please compile against libdirectfb version >= 1.0.0"
-#endif
-
-/* Set below to 1 to compile with (old) multi mice/keyboard api. Code left in
- * in case we see this again ...
- */
-
-#define USE_MULTI_API   (0)
-
-/* Support for LUT8/INDEX8 pixel format.
- * This is broken in DirectFB 1.4.3. It works in 1.4.0 and 1.4.5
- * occurred.
- */
-
-#if (DFB_COMPILEDVERSION == DFB_VERSIONNUM(1, 4, 3))
-#define ENABLE_LUT8     (0)
-#else
-#define ENABLE_LUT8     (1)
-#endif
-
-#define DIRECTFB_DEBUG 1
-
-#define DFBENV_USE_YUV_UNDERLAY     "SDL_DIRECTFB_YUV_UNDERLAY"     /* Default: off */
-#define DFBENV_USE_YUV_DIRECT       "SDL_DIRECTFB_YUV_DIRECT"       /* Default: off */
-#define DFBENV_USE_X11_CHECK        "SDL_DIRECTFB_X11_CHECK"        /* Default: on  */
-#define DFBENV_USE_LINUX_INPUT      "SDL_DIRECTFB_LINUX_INPUT"      /* Default: on  */
-#define DFBENV_USE_WM               "SDL_DIRECTFB_WM"       /* Default: off  */
-
-#define SDL_DFB_RELEASE(x) do { if ( (x) != NULL ) { SDL_DFB_CHECK(x->Release(x)); x = NULL; } } while (0)
-#define SDL_DFB_FREE(x) do { SDL_free((x)); (x) = NULL; } while (0)
-#define SDL_DFB_UNLOCK(x) do { if ( (x) != NULL ) { x->Unlock(x); } } while (0)
-
-#define SDL_DFB_CONTEXT "SDL_DirectFB"
-
-#define SDL_DFB_ERR(x...) SDL_LogError(SDL_LOG_CATEGORY_ERROR, x)
-
-#if (DIRECTFB_DEBUG)
-#define SDL_DFB_LOG(x...) SDL_LogInfo(SDL_LOG_CATEGORY_VIDEO, x)
-
-#define SDL_DFB_DEBUG(x...) SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, x)
-
-static SDL_INLINE DFBResult sdl_dfb_check(DFBResult ret, const char *src_file, int src_line) {
-    if (ret != DFB_OK) {
-        SDL_DFB_LOG("%s (%d):%s", src_file, src_line, DirectFBErrorString (ret) );
-        SDL_SetError("%s:%s", SDL_DFB_CONTEXT, DirectFBErrorString (ret) );
-    }
-    return ret;
-}
-
-#define SDL_DFB_CHECK(x...) do { sdl_dfb_check( x, __FILE__, __LINE__); } while (0)
-#define SDL_DFB_CHECKERR(x...) do { if ( sdl_dfb_check( x, __FILE__, __LINE__) != DFB_OK ) goto error; } while (0)
-
-#else
-
-#define SDL_DFB_CHECK(x...) x
-#define SDL_DFB_CHECKERR(x...) do { if (x != DFB_OK ) goto error; } while (0)
-#define SDL_DFB_LOG(x...) do {} while (0)
-#define SDL_DFB_DEBUG(x...) do {} while (0)
-
-#endif
-
-
-#define SDL_DFB_CALLOC(r, n, s) \
-     do {                                           \
-          r = SDL_calloc (n, s);                    \
-          if (!(r)) {                               \
-               SDL_DFB_ERR("Out of memory");        \
-               SDL_OutOfMemory();                   \
-               goto error;                          \
-          }                                         \
-     } while (0)
-
-#define SDL_DFB_ALLOC_CLEAR(r, s) SDL_DFB_CALLOC(r, 1, s)
-
-/* Private display data */
-
-#define SDL_DFB_DEVICEDATA(dev)  DFB_DeviceData *devdata = (dev ? (DFB_DeviceData *) ((dev)->driverdata) : NULL)
-
-#define DFB_MAX_SCREENS 10
-
-typedef struct _DFB_KeyboardData DFB_KeyboardData;
-struct _DFB_KeyboardData
-{
-    const SDL_Scancode  *map;       /* keyboard scancode map */
-    int             map_size;   /* size of map */
-    int             map_adjust; /* index adjust */
-    int             is_generic; /* generic keyboard */
-    int id;
-};
-
-typedef struct _DFB_DeviceData DFB_DeviceData;
-struct _DFB_DeviceData
-{
-    int initialized;
-
-    IDirectFB           *dfb;
-    int                 num_mice;
-    int                 mouse_id[0x100];
-    int                 num_keyboard;
-    DFB_KeyboardData    keyboard[10];
-    SDL_Window          *firstwin;
-
-    int                 use_yuv_underlays;
-    int                 use_yuv_direct;
-    int                 use_linux_input;
-    int                 has_own_wm;
-
-    /* global events */
-    IDirectFBEventBuffer *events;
-};
-
-Uint32 DirectFB_DFBToSDLPixelFormat(DFBSurfacePixelFormat pixelformat);
-DFBSurfacePixelFormat DirectFB_SDLToDFBPixelFormat(Uint32 format);
-void DirectFB_SetSupportedPixelFormats(SDL_RendererInfo *ri);
-
-
-#endif /* SDL_DirectFB_video_h_ */

+ 0 - 169
src/video/directfb/SDL_DirectFB_vulkan.c

@@ -1,169 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_window.h"
-
-#include "SDL_loadso.h"
-#include "SDL_DirectFB_vulkan.h"
-
-int DirectFB_Vulkan_LoadLibrary(_THIS, const char *path)
-{
-    VkExtensionProperties *extensions = NULL;
-    Uint32 i, extensionCount = 0;
-    SDL_bool hasSurfaceExtension = SDL_FALSE;
-    SDL_bool hasDirectFBSurfaceExtension = SDL_FALSE;
-    PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = NULL;
-    if(_this->vulkan_config.loader_handle)
-        return SDL_SetError("Vulkan already loaded");
-
-    /* Load the Vulkan loader library */
-    if(!path)
-        path = SDL_getenv("SDL_VULKAN_LIBRARY");
-    if(!path)
-        path = "libvulkan.so.1";
-    _this->vulkan_config.loader_handle = SDL_LoadObject(path);
-    if(!_this->vulkan_config.loader_handle)
-        return -1;
-    SDL_strlcpy(_this->vulkan_config.loader_path, path,
-                SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
-        _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
-    if(!vkGetInstanceProcAddr)
-        goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
-    _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
-            VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
-    if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
-        goto fail;
-    extensions = SDL_Vulkan_CreateInstanceExtensionsList(
-        (PFN_vkEnumerateInstanceExtensionProperties)
-            _this->vulkan_config.vkEnumerateInstanceExtensionProperties,
-        &extensionCount);
-    if(!extensions)
-        goto fail;
-    for(i = 0; i < extensionCount; i++)
-    {
-        if(SDL_strcmp(VK_KHR_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0)
-            hasSurfaceExtension = SDL_TRUE;
-        else if(SDL_strcmp(VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0)
-            hasDirectFBSurfaceExtension = SDL_TRUE;
-    }
-    SDL_free(extensions);
-    if(!hasSurfaceExtension)
-    {
-        SDL_SetError("Installed Vulkan doesn't implement the "
-                     VK_KHR_SURFACE_EXTENSION_NAME " extension");
-        goto fail;
-    }
-    else if(!hasDirectFBSurfaceExtension)
-    {
-        SDL_SetError("Installed Vulkan doesn't implement the "
-                     VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "extension");
-        goto fail;
-    }
-    return 0;
-
-fail:
-    SDL_UnloadObject(_this->vulkan_config.loader_handle);
-    _this->vulkan_config.loader_handle = NULL;
-    return -1;
-}
-
-void DirectFB_Vulkan_UnloadLibrary(_THIS)
-{
-    if(_this->vulkan_config.loader_handle)
-    {
-        SDL_UnloadObject(_this->vulkan_config.loader_handle);
-        _this->vulkan_config.loader_handle = NULL;
-    }
-}
-
-SDL_bool DirectFB_Vulkan_GetInstanceExtensions(_THIS,
-                                          SDL_Window *window,
-                                          unsigned *count,
-                                          const char **names)
-{
-    static const char *const extensionsForDirectFB[] = {
-        VK_KHR_SURFACE_EXTENSION_NAME, VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME
-    };
-    if(!_this->vulkan_config.loader_handle)
-    {
-        SDL_SetError("Vulkan is not loaded");
-        return SDL_FALSE;
-    }
-    return SDL_Vulkan_GetInstanceExtensions_Helper(
-            count, names, SDL_arraysize(extensionsForDirectFB),
-            extensionsForDirectFB);
-}
-
-SDL_bool DirectFB_Vulkan_CreateSurface(_THIS,
-                                  SDL_Window *window,
-                                  VkInstance instance,
-                                  VkSurfaceKHR *surface)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(window);
-    PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr =
-        (PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr;
-    PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT =
-        (PFN_vkCreateDirectFBSurfaceEXT)vkGetInstanceProcAddr(
-                                            instance,
-                                            "vkCreateDirectFBSurfaceEXT");
-    VkDirectFBSurfaceCreateInfoEXT createInfo;
-    VkResult result;
-
-    if(!_this->vulkan_config.loader_handle)
-    {
-        SDL_SetError("Vulkan is not loaded");
-        return SDL_FALSE;
-    }
-
-    if(!vkCreateDirectFBSurfaceEXT)
-    {
-        SDL_SetError(VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME
-                     " extension is not enabled in the Vulkan instance.");
-        return SDL_FALSE;
-    }
-    SDL_zero(createInfo);
-    createInfo.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;
-    createInfo.pNext = NULL;
-    createInfo.flags = 0;
-    createInfo.dfb = devdata->dfb;
-    createInfo.surface =  windata->surface;
-    result = vkCreateDirectFBSurfaceEXT(instance, &createInfo,
-                                        NULL, surface);
-    if(result != VK_SUCCESS)
-    {
-        SDL_SetError("vkCreateDirectFBSurfaceEXT failed: %s",
-                     SDL_Vulkan_GetResultString(result));
-        return SDL_FALSE;
-    }
-    return SDL_TRUE;
-}
-
-#endif
-
-/* vim: set ts=4 sw=4 expandtab: */

+ 0 - 47
src/video/directfb/SDL_DirectFB_vulkan.h

@@ -1,47 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_DirectFB_vulkan_h_
-#define SDL_DirectFB_vulkan_h_
-
-#include "../SDL_vulkan_internal.h"
-#include "../SDL_sysvideo.h"
-
-#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_DIRECTFB
-
-int DirectFB_Vulkan_LoadLibrary(_THIS, const char *path);
-void DirectFB_Vulkan_UnloadLibrary(_THIS);
-SDL_bool DirectFB_Vulkan_GetInstanceExtensions(_THIS,
-                                          SDL_Window *window,
-                                          unsigned *count,
-                                          const char **names);
-SDL_bool DirectFB_Vulkan_CreateSurface(_THIS,
-                                  SDL_Window *window,
-                                  VkInstance instance,
-                                  VkSurfaceKHR *surface);
-
-#endif
-
-#endif /* SDL_DirectFB_vulkan_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 565
src/video/directfb/SDL_DirectFB_window.c

@@ -1,565 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_DIRECTFB
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_modes.h"
-#include "SDL_DirectFB_window.h"
-#include "SDL_DirectFB_shape.h"
-
-#if SDL_DIRECTFB_OPENGL
-#include "SDL_DirectFB_opengl.h"
-#endif
-
-#include "SDL_syswm.h"
-
-#include "../SDL_pixels_c.h"
-
-int
-DirectFB_CreateWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_DISPLAYDATA(window);
-    DFB_WindowData *windata = NULL;
-    DFBWindowOptions wopts;
-    DFBWindowDescription desc;
-    int x, y;
-    int bshaped = 0;
-
-    SDL_DFB_ALLOC_CLEAR(window->driverdata, sizeof(DFB_WindowData));
-    SDL_memset(&desc, 0, sizeof(DFBWindowDescription));
-    windata = (DFB_WindowData *) window->driverdata;
-
-    windata->is_managed = devdata->has_own_wm;
-#if 1
-    SDL_DFB_CHECKERR(devdata->dfb->SetCooperativeLevel(devdata->dfb,
-                                                       DFSCL_NORMAL));
-    SDL_DFB_CHECKERR(dispdata->layer->SetCooperativeLevel(dispdata->layer,
-                                                          DLSCL_ADMINISTRATIVE));
-#endif
-    /* FIXME ... ughh, ugly */
-    if (window->x == -1000 && window->y == -1000)
-        bshaped = 1;
-
-    /* Fill the window description. */
-    x = window->x;
-    y = window->y;
-
-    DirectFB_WM_AdjustWindowLayout(window, window->flags, window->w, window->h);
-
-    /* Create Window */
-    desc.caps = 0;
-    desc.flags =
-        DWDESC_WIDTH | DWDESC_HEIGHT | DWDESC_POSX | DWDESC_POSY | DWDESC_SURFACE_CAPS;
-
-    if (bshaped) {
-        desc.flags |= DWDESC_CAPS;
-        desc.caps |= DWCAPS_ALPHACHANNEL;
-    }
-    else
-    {
-        desc.flags |= DWDESC_PIXELFORMAT;
-    }
-
-    if (!(window->flags & SDL_WINDOW_BORDERLESS))
-        desc.caps |= DWCAPS_NODECORATION;
-
-    desc.posx = x;
-    desc.posy = y;
-    desc.width = windata->size.w;
-    desc.height = windata->size.h;
-    desc.pixelformat = dispdata->pixelformat;
-    desc.surface_caps = DSCAPS_PREMULTIPLIED;
-#if DIRECTFB_MAJOR_VERSION == 1 && DIRECTFB_MINOR_VERSION >= 6
-    if (window->flags & SDL_WINDOW_OPENGL) {
-        desc.surface_caps |= DSCAPS_GL;
-    }
-#endif
-
-    /* Create the window. */
-    SDL_DFB_CHECKERR(dispdata->layer->CreateWindow(dispdata->layer, &desc,
-                                                   &windata->dfbwin));
-
-    /* Set Options */
-    SDL_DFB_CHECK(windata->dfbwin->GetOptions(windata->dfbwin, &wopts));
-
-    /* explicit rescaling of surface */
-    wopts |= DWOP_SCALE;
-    if (window->flags & SDL_WINDOW_RESIZABLE) {
-        wopts &= ~DWOP_KEEP_SIZE;
-    }
-    else {
-        wopts |= DWOP_KEEP_SIZE;
-    }
-
-    if (window->flags & SDL_WINDOW_FULLSCREEN) {
-        wopts |= DWOP_KEEP_POSITION | DWOP_KEEP_STACKING | DWOP_KEEP_SIZE;
-        SDL_DFB_CHECK(windata->dfbwin->SetStackingClass(windata->dfbwin, DWSC_UPPER));
-    }
-
-    if (bshaped) {
-        wopts |= DWOP_SHAPED | DWOP_ALPHACHANNEL;
-        wopts &= ~DWOP_OPAQUE_REGION;
-    }
-
-    SDL_DFB_CHECK(windata->dfbwin->SetOptions(windata->dfbwin, wopts));
-
-    /* See what we got */
-    SDL_DFB_CHECK(DirectFB_WM_GetClientSize
-                     (_this, window, &window->w, &window->h));
-
-    /* Get the window's surface. */
-    SDL_DFB_CHECKERR(windata->dfbwin->GetSurface(windata->dfbwin,
-                                                 &windata->window_surface));
-
-    /* And get a subsurface for rendering */
-    SDL_DFB_CHECKERR(windata->window_surface->
-                     GetSubSurface(windata->window_surface, &windata->client,
-                                   &windata->surface));
-
-    SDL_DFB_CHECK(windata->dfbwin->SetOpacity(windata->dfbwin, 0xFF));
-
-    /* Create Eventbuffer */
-
-    SDL_DFB_CHECKERR(windata->dfbwin->CreateEventBuffer(windata->dfbwin,
-                                                        &windata->
-                                                        eventbuffer));
-    SDL_DFB_CHECKERR(windata->dfbwin->
-                     EnableEvents(windata->dfbwin, DWET_ALL));
-
-    /* Create a font */
-    /* FIXME: once during Video_Init */
-    windata->font = NULL;
-
-    /* Make it the top most window. */
-    SDL_DFB_CHECK(windata->dfbwin->RaiseToTop(windata->dfbwin));
-
-    /* remember parent */
-    /* windata->sdlwin = window; */
-
-    /* Add to list ... */
-
-    windata->next = devdata->firstwin;
-    windata->opacity = 0xFF;
-    devdata->firstwin = window;
-
-    /* Draw Frame */
-    DirectFB_WM_RedrawLayout(_this, window);
-
-    return 0;
-  error:
-    SDL_DFB_RELEASE(windata->surface);
-    SDL_DFB_RELEASE(windata->dfbwin);
-    return -1;
-}
-
-int
-DirectFB_CreateWindowFrom(_THIS, SDL_Window * window, const void *data)
-{
-    return SDL_Unsupported();
-}
-
-void
-DirectFB_SetWindowTitle(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    if (windata->is_managed) {
-        windata->wm_needs_redraw = 1;
-        DirectFB_WM_RedrawLayout(_this, window);
-    } else {
-        SDL_Unsupported();
-    }
-}
-
-void
-DirectFB_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(window);
-    SDL_Surface *surface = NULL;
-
-    if (icon) {
-        SDL_PixelFormat format;
-        DFBSurfaceDescription dsc;
-        Uint32 *dest;
-        Uint32 *p;
-        int pitch, i;
-
-        /* Convert the icon to ARGB for modern window managers */
-        SDL_InitFormat(&format, SDL_PIXELFORMAT_ARGB8888);
-        surface = SDL_ConvertSurface(icon, &format, 0);
-        if (!surface) {
-            return;
-        }
-        dsc.flags =
-            DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
-        dsc.caps = DSCAPS_VIDEOONLY;
-        dsc.width = surface->w;
-        dsc.height = surface->h;
-        dsc.pixelformat = DSPF_ARGB;
-
-        SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc,
-                                                     &windata->icon));
-
-        SDL_DFB_CHECKERR(windata->icon->Lock(windata->icon, DSLF_WRITE,
-                                             (void *) &dest, &pitch));
-
-        p = surface->pixels;
-        for (i = 0; i < surface->h; i++)
-            SDL_memcpy((char *) dest + i * pitch,
-                   (char *) p + i * surface->pitch, 4 * surface->w);
-
-        SDL_DFB_CHECK(windata->icon->Unlock(windata->icon));
-        SDL_FreeSurface(surface);
-    } else {
-        SDL_DFB_RELEASE(windata->icon);
-    }
-    return;
-  error:
-    SDL_FreeSurface(surface);
-    SDL_DFB_RELEASE(windata->icon);
-    return;
-}
-
-void
-DirectFB_SetWindowPosition(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    int x, y;
-
-    x = window->x;
-    y = window->y;
-
-    DirectFB_WM_AdjustWindowLayout(window, window->flags, window->w, window->h);
-    SDL_DFB_CHECK(windata->dfbwin->MoveTo(windata->dfbwin, x, y));
-}
-
-void
-DirectFB_SetWindowSize(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    if(SDL_IsShapedWindow(window))
-        DirectFB_ResizeWindowShape(window);
-
-    if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
-        int cw;
-        int ch;
-
-        /* Make sure all events are disabled for this operation ! */
-        SDL_DFB_CHECKERR(windata->dfbwin->DisableEvents(windata->dfbwin,
-                                                        DWET_ALL));
-        SDL_DFB_CHECKERR(DirectFB_WM_GetClientSize(_this, window, &cw, &ch));
-
-        if (cw != window->w || ch != window->h) {
-
-            DirectFB_WM_AdjustWindowLayout(window, window->flags, window->w, window->h);
-            SDL_DFB_CHECKERR(windata->dfbwin->Resize(windata->dfbwin,
-                                                     windata->size.w,
-                                                     windata->size.h));
-        }
-
-        SDL_DFB_CHECKERR(DirectFB_WM_GetClientSize
-                     (_this, window, &window->w, &window->h));
-        DirectFB_AdjustWindowSurface(window);
-
-        SDL_DFB_CHECKERR(windata->dfbwin->EnableEvents(windata->dfbwin,
-                                                       DWET_ALL));
-
-    }
-    return;
-  error:
-    SDL_DFB_CHECK(windata->dfbwin->EnableEvents(windata->dfbwin, DWET_ALL));
-    return;
-}
-
-void
-DirectFB_ShowWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    SDL_DFB_CHECK(windata->dfbwin->SetOpacity(windata->dfbwin, windata->opacity));
-
-}
-
-void
-DirectFB_HideWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    SDL_DFB_CHECK(windata->dfbwin->GetOpacity(windata->dfbwin, &windata->opacity));
-    SDL_DFB_CHECK(windata->dfbwin->SetOpacity(windata->dfbwin, 0));
-}
-
-void
-DirectFB_RaiseWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    SDL_DFB_CHECK(windata->dfbwin->RaiseToTop(windata->dfbwin));
-    SDL_DFB_CHECK(windata->dfbwin->RequestFocus(windata->dfbwin));
-}
-
-void
-DirectFB_MaximizeWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-    DFBWindowOptions wopts;
-
-    SDL_DFB_CHECK(windata->dfbwin->GetPosition(windata->dfbwin,
-                                 &windata->restore.x, &windata->restore.y));
-    SDL_DFB_CHECK(windata->dfbwin->GetSize(windata->dfbwin, &windata->restore.w,
-                             &windata->restore.h));
-
-    DirectFB_WM_AdjustWindowLayout(window, window->flags | SDL_WINDOW_MAXIMIZED, display->current_mode.w, display->current_mode.h) ;
-
-    SDL_DFB_CHECK(windata->dfbwin->MoveTo(windata->dfbwin, 0, 0));
-    SDL_DFB_CHECK(windata->dfbwin->Resize(windata->dfbwin,
-                            display->current_mode.w, display->current_mode.h));
-
-    /* Set Options */
-    SDL_DFB_CHECK(windata->dfbwin->GetOptions(windata->dfbwin, &wopts));
-    wopts |= DWOP_KEEP_SIZE | DWOP_KEEP_POSITION;
-    SDL_DFB_CHECK(windata->dfbwin->SetOptions(windata->dfbwin, wopts));
-}
-
-void
-DirectFB_MinimizeWindow(_THIS, SDL_Window * window)
-{
-    /* FIXME: Size to 32x32 ? */
-
-    SDL_Unsupported();
-}
-
-void
-DirectFB_RestoreWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    DFBWindowOptions wopts;
-
-    /* Set Options */
-    SDL_DFB_CHECK(windata->dfbwin->GetOptions(windata->dfbwin, &wopts));
-    wopts &= ~(DWOP_KEEP_SIZE | DWOP_KEEP_POSITION);
-    SDL_DFB_CHECK(windata->dfbwin->SetOptions(windata->dfbwin, wopts));
-
-    /* Window layout */
-    DirectFB_WM_AdjustWindowLayout(window, window->flags & ~(SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED),
-        windata->restore.w, windata->restore.h);
-    SDL_DFB_CHECK(windata->dfbwin->Resize(windata->dfbwin, windata->restore.w,
-                            windata->restore.h));
-    SDL_DFB_CHECK(windata->dfbwin->MoveTo(windata->dfbwin, windata->restore.x,
-                            windata->restore.y));
-
-    if (!(window->flags & SDL_WINDOW_RESIZABLE))
-        wopts |= DWOP_KEEP_SIZE;
-
-    if (window->flags & SDL_WINDOW_FULLSCREEN)
-        wopts |= DWOP_KEEP_POSITION | DWOP_KEEP_SIZE;
-    SDL_DFB_CHECK(windata->dfbwin->SetOptions(windata->dfbwin, wopts));
-
-
-}
-
-void
-DirectFB_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    if (grabbed) {
-        SDL_DFB_CHECK(windata->dfbwin->GrabPointer(windata->dfbwin));
-    } else {
-        SDL_DFB_CHECK(windata->dfbwin->UngrabPointer(windata->dfbwin));
-    }
-}
-
-void
-DirectFB_SetWindowKeyboardGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
-{
-    SDL_DFB_WINDOWDATA(window);
-
-    if (grabbed) {
-        SDL_DFB_CHECK(windata->dfbwin->GrabKeyboard(windata->dfbwin));
-    } else {
-        SDL_DFB_CHECK(windata->dfbwin->UngrabKeyboard(windata->dfbwin));
-    }
-}
-
-void
-DirectFB_DestroyWindow(_THIS, SDL_Window * window)
-{
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(window);
-    DFB_WindowData *p;
-
-    /* Some cleanups */
-    SDL_DFB_CHECK(windata->dfbwin->UngrabPointer(windata->dfbwin));
-    SDL_DFB_CHECK(windata->dfbwin->UngrabKeyboard(windata->dfbwin));
-
-#if SDL_DIRECTFB_OPENGL
-    DirectFB_GL_DestroyWindowContexts(_this, window);
-#endif
-
-    if (window->shaper)
-    {
-        SDL_ShapeData *data = window->shaper->driverdata;
-        SDL_DFB_CHECK(data->surface->ReleaseSource(data->surface));
-        SDL_DFB_RELEASE(data->surface);
-        SDL_DFB_FREE(data);
-        SDL_DFB_FREE(window->shaper);
-    }
-
-    SDL_DFB_CHECK(windata->window_surface->SetFont(windata->window_surface, NULL));
-    SDL_DFB_CHECK(windata->surface->ReleaseSource(windata->surface));
-    SDL_DFB_CHECK(windata->window_surface->ReleaseSource(windata->window_surface));
-    SDL_DFB_RELEASE(windata->icon);
-    SDL_DFB_RELEASE(windata->font);
-    SDL_DFB_RELEASE(windata->eventbuffer);
-    SDL_DFB_RELEASE(windata->surface);
-    SDL_DFB_RELEASE(windata->window_surface);
-
-    SDL_DFB_RELEASE(windata->dfbwin);
-
-    /* Remove from list ... */
-
-    p = devdata->firstwin->driverdata;
-
-    while (p && p->next != window)
-        p = (p->next ? p->next->driverdata : NULL);
-    if (p)
-        p->next = windata->next;
-    else
-        devdata->firstwin = windata->next;
-    SDL_free(windata);
-    return;
-}
-
-SDL_bool
-DirectFB_GetWindowWMInfo(_THIS, SDL_Window * window,
-                         struct SDL_SysWMinfo * info)
-{
-    const Uint32 version = ((((Uint32) info->version.major) * 1000000) +
-                            (((Uint32) info->version.minor) * 10000) +
-                            (((Uint32) info->version.patch)));
-
-    SDL_DFB_DEVICEDATA(_this);
-    SDL_DFB_WINDOWDATA(window);
-
-    /* Before 2.0.6, it was possible to build an SDL with DirectFB support
-       (SDL_SysWMinfo will be large enough to hold DirectFB info), but build
-       your app against SDL headers that didn't have DirectFB support
-       (SDL_SysWMinfo could be smaller than DirectFB needs. This would lead
-       to an app properly using SDL_GetWindowWMInfo() but we'd accidentally
-       overflow memory on the stack or heap. To protect against this, we've
-       padded out the struct unconditionally in the headers and DirectFB will
-       just return an error for older apps using this function. Those apps
-       will need to be recompiled against newer headers or not use DirectFB,
-       maybe by forcing SDL_VIDEODRIVER=x11. */
-    if (version < 2000006) {
-        info->subsystem = SDL_SYSWM_UNKNOWN;
-        SDL_SetError("Version must be 2.0.6 or newer");
-        return SDL_FALSE;
-    }
-
-    if (info->version.major == SDL_MAJOR_VERSION) {
-        info->subsystem = SDL_SYSWM_DIRECTFB;
-        info->info.dfb.dfb = devdata->dfb;
-        info->info.dfb.window = windata->dfbwin;
-        info->info.dfb.surface = windata->surface;
-        return SDL_TRUE;
-    } else {
-        SDL_SetError("Application not compiled with SDL %d",
-                     SDL_MAJOR_VERSION);
-        return SDL_FALSE;
-    }
-}
-
-void
-DirectFB_AdjustWindowSurface(SDL_Window * window)
-{
-    SDL_DFB_WINDOWDATA(window);
-    int adjust = windata->wm_needs_redraw;
-    int cw, ch;
-
-    DirectFB_WM_AdjustWindowLayout(window, window->flags, window->w, window->h);
-
-    SDL_DFB_CHECKERR(windata->
-                     window_surface->GetSize(windata->window_surface, &cw,
-                                             &ch));
-    if (cw != windata->size.w || ch != windata->size.h) {
-        adjust = 1;
-    }
-
-    if (adjust) {
-#if SDL_DIRECTFB_OPENGL
-        DirectFB_GL_FreeWindowContexts(SDL_GetVideoDevice(), window);
-#endif
-
-#if (DFB_VERSION_ATLEAST(1,2,1))
-        SDL_DFB_CHECKERR(windata->dfbwin->ResizeSurface(windata->dfbwin,
-                                                        windata->size.w,
-                                                        windata->size.h));
-        SDL_DFB_CHECKERR(windata->surface->MakeSubSurface(windata->surface,
-                                                          windata->
-                                                          window_surface,
-                                                          &windata->client));
-#else
-        DFBWindowOptions opts;
-
-        SDL_DFB_CHECKERR(windata->dfbwin->GetOptions(windata->dfbwin, &opts));
-        /* recreate subsurface */
-        SDL_DFB_RELEASE(windata->surface);
-
-        if (opts & DWOP_SCALE)
-            SDL_DFB_CHECKERR(windata->dfbwin->ResizeSurface(windata->dfbwin,
-                                                            windata->size.w,
-                                                            windata->size.h));
-        SDL_DFB_CHECKERR(windata->window_surface->
-                         GetSubSurface(windata->window_surface,
-                                       &windata->client, &windata->surface));
-#endif
-        DirectFB_WM_RedrawLayout(SDL_GetVideoDevice(), window);
-
-#if SDL_DIRECTFB_OPENGL
-        DirectFB_GL_ReAllocWindowContexts(SDL_GetVideoDevice(), window);
-#endif
-   }
-  error:
-    return;
-}
-
-int
-DirectFB_SetWindowOpacity(_THIS, SDL_Window * window, float opacity)
-{
-    const Uint8 alpha = (Uint8) ((unsigned int) (opacity * 255.0f));
-    SDL_DFB_WINDOWDATA(window);
-    SDL_DFB_CHECKERR(windata->dfbwin->SetOpacity(windata->dfbwin, alpha));
-    windata->opacity = alpha;
-    return 0;
-
-error:
-    return -1;
-}
-
-#endif /* SDL_VIDEO_DRIVER_DIRECTFB */

+ 0 - 83
src/video/directfb/SDL_DirectFB_window.h

@@ -1,83 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_directfb_window_h_
-#define SDL_directfb_window_h_
-
-#include "SDL_DirectFB_video.h"
-#include "SDL_DirectFB_WM.h"
-
-#define SDL_DFB_WINDOWDATA(win)  DFB_WindowData *windata = ((win) ? (DFB_WindowData *) ((win)->driverdata) : NULL)
-
-typedef struct _DFB_WindowData DFB_WindowData;
-struct _DFB_WindowData
-{
-    IDirectFBSurface        *window_surface;    /* window surface */
-    IDirectFBSurface        *surface;           /* client drawing surface */
-    IDirectFBWindow         *dfbwin;
-    IDirectFBEventBuffer    *eventbuffer;
-    /* SDL_Window                *sdlwin; */
-    SDL_Window              *next;
-    Uint8                   opacity;
-    DFBRectangle            client;
-    DFBDimension            size;
-    DFBRectangle            restore;
-
-    /* WM extras */
-    int                     is_managed;
-    int                     wm_needs_redraw;
-    IDirectFBSurface        *icon;
-    IDirectFBFont           *font;
-    DFB_Theme               theme;
-
-    /* WM moving and sizing */
-    int                     wm_grab;
-    int                     wm_lastx;
-    int                     wm_lasty;
-};
-
-extern int DirectFB_CreateWindow(_THIS, SDL_Window * window);
-extern int DirectFB_CreateWindowFrom(_THIS, SDL_Window * window,
-                                     const void *data);
-extern void DirectFB_SetWindowTitle(_THIS, SDL_Window * window);
-extern void DirectFB_SetWindowIcon(_THIS, SDL_Window * window,
-                                   SDL_Surface * icon);
-
-extern void DirectFB_SetWindowPosition(_THIS, SDL_Window * window);
-extern void DirectFB_SetWindowSize(_THIS, SDL_Window * window);
-extern void DirectFB_ShowWindow(_THIS, SDL_Window * window);
-extern void DirectFB_HideWindow(_THIS, SDL_Window * window);
-extern void DirectFB_RaiseWindow(_THIS, SDL_Window * window);
-extern void DirectFB_MaximizeWindow(_THIS, SDL_Window * window);
-extern void DirectFB_MinimizeWindow(_THIS, SDL_Window * window);
-extern void DirectFB_RestoreWindow(_THIS, SDL_Window * window);
-extern void DirectFB_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed);
-extern void DirectFB_SetWindowKeyboardGrab(_THIS, SDL_Window * window, SDL_bool grabbed);
-extern void DirectFB_DestroyWindow(_THIS, SDL_Window * window);
-extern SDL_bool DirectFB_GetWindowWMInfo(_THIS, SDL_Window * window,
-                                         struct SDL_SysWMinfo *info);
-
-extern void DirectFB_AdjustWindowSurface(SDL_Window * window);
-extern int DirectFB_SetWindowOpacity(_THIS, SDL_Window * window, float opacity);
-
-#endif /* SDL_directfb_window_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */