rpms/directfb/F-10 DirectFB-1.2.7-libv4l2.patch, NONE, 1.1 directfb.spec, 1.20, 1.21

Chauvet Nicolas kwizart at fedoraproject.org
Fri Feb 13 01:01:30 UTC 2009


Author: kwizart

Update of /cvs/pkgs/rpms/directfb/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv4769

Modified Files:
	directfb.spec 
Added Files:
	DirectFB-1.2.7-libv4l2.patch 
Log Message:
Update to 1.2.7


DirectFB-1.2.7-libv4l2.patch:

--- NEW FILE DirectFB-1.2.7-libv4l2.patch ---
diff -up DirectFB-1.2.7/configure.in.libv4l2 DirectFB-1.2.7/configure.in
--- DirectFB-1.2.7/configure.in.libv4l2	2009-01-20 13:50:58.000000000 +0100
+++ DirectFB-1.2.7/configure.in	2009-01-21 14:03:39.000000000 +0100
@@ -150,7 +150,7 @@ fi
 AM_CONDITIONAL(X11_CORE, test "$enable_x11" = "yes")
 
 
-AC_CHECK_HEADERS(linux/compiler.h linux/unistd.h asm/page.h)
+AC_CHECK_HEADERS(linux/compiler.h linux/unistd.h asm/page.h linux/videodev.h linux/videodev2.h)
 
 
 dnl Clear default CFLAGS
@@ -847,6 +847,19 @@ if test "$V4L" = "yes"; then
   fi
 fi
 
+dnl
+dnl libv4l2 support for video4linux.
+dnl
+AC_ARG_ENABLE( libv4l2,
+  [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
+if test "${enable_libv4l2}" = "yes" -a "${enable_v4l2}" != "no"
+then
+    PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
+      AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
+      AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
+    )
+fi
+
 
 dnl check which gfxdrivers to build
 ati128=no
@@ -1654,7 +1667,8 @@ Building Image Provider Modules:
 
 Building Video Provider Modules:
   GIF                       $enable_gif
-  Video4Linux               $V4L (v2: $V4L2)
+  Video4Linux               $V4L 
+  Video4Linux2              $V4L2            LIBV4L2: $LIBV4L2_CFLAGS     $LIBV4L2_LIBS
 
 Building Font Modules:
   FreeType2                 $FREETYPE                 $FREETYPE_CFLAGS    $FREETYPE_LIBS
diff -up DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/idirectfbvideoprovider_v4l.c.libv4l2 DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/idirectfbvideoprovider_v4l.c
--- DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/idirectfbvideoprovider_v4l.c.libv4l2	2009-01-20 13:50:58.000000000 +0100
+++ DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/idirectfbvideoprovider_v4l.c	2009-01-21 14:02:26.000000000 +0100
@@ -49,7 +49,11 @@
 #ifdef HAVE_LINUX_COMPILER_H
 #include <linux/compiler.h>
 #endif
+#ifdef HAVE_LINUX_VIDEODEV_H
+#include <linux/videodev.h>
+#else
 #include "videodev.h"
+#endif
 
 #include <directfb.h>
 
@@ -78,8 +82,21 @@
 #include <direct/util.h>
 
 #ifdef DFB_HAVE_V4L2
+#ifdef HAVE_LINUX_VIDEODEV2_H
+#include <linux/videodev2.h>
+#else
 #include "videodev2.h"
 #endif
+#ifdef HAVE_LIBV4L2
+#   include <libv4l2.h>
+#else
+#   define v4l2_fd_open(fd, flags) (fd)
+#   define v4l2_close close
+#   define v4l2_ioctl ioctl
+#   define v4l2_mmap mmap
+#   define v4l2_munmap munmap
+#endif
+#endif
 
 static DFBResult
 Probe( IDirectFBVideoProvider_ProbeContext *ctx );
@@ -211,28 +228,28 @@ IDirectFBVideoProvider_V4L_GetCapabiliti
           *caps = 0;
 
           data->saturation.id = V4L2_CID_SATURATION;
-          if (ioctl( data->fd, VIDIOC_G_CTRL, &data->saturation )) {
+          if (v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->saturation )) {
                *caps |= DVCAPS_SATURATION;
           }
           else {
                data->saturation.id = 0;
           }
           data->brightness.id = V4L2_CID_BRIGHTNESS;
-          if (ioctl( data->fd, VIDIOC_G_CTRL, &data->brightness )) {
+          if (v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->brightness )) {
                *caps |= DVCAPS_BRIGHTNESS;
           }
           else {
                data->brightness.id = 0;
           }
           data->contrast.id = V4L2_CID_CONTRAST;
-          if (ioctl( data->fd, VIDIOC_G_CTRL, &data->contrast )) {
+          if (v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->contrast )) {
                *caps |= DVCAPS_CONTRAST;
           }
           else {
                data->contrast.id = 0;
           }
           data->hue.id = V4L2_CID_HUE;
-          if (ioctl( data->fd, VIDIOC_G_CTRL, &data->hue )) {
+          if (v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->hue )) {
                *caps |= DVCAPS_HUE;
           }
           else {
@@ -471,28 +488,28 @@ IDirectFBVideoProvider_V4L_GetColorAdjus
 
           if (data->brightness.id) {
                ctrl.id = data->brightness.id;
-               if (!ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
+               if (!v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
                     adj->flags |= DCAF_BRIGHTNESS;
                     adj->brightness = 0xffff * ctrl.value / (data->brightness.maximum - data->brightness.minimum);
                }
           }
           if (data->contrast.id) {
                ctrl.id = data->contrast.id;
-               if (!ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
+               if (!v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
                     adj->flags |= DCAF_CONTRAST;
                     adj->contrast = 0xffff * ctrl.value / (data->contrast.maximum - data->contrast.minimum);
                }
           }
           if (data->hue.id) {
                ctrl.id = data->hue.id;
-               if (!ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
+               if (!v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
                     adj->flags |= DCAF_HUE;
                     adj->hue = 0xffff * ctrl.value / (data->hue.maximum - data->hue.minimum);
                }
           }
           if (data->saturation.id) {
                ctrl.id = data->saturation.id;
-               if (!ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
+               if (!v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &ctrl )) {
                     adj->flags |= DCAF_SATURATION;
                     adj->saturation = 0xffff * ctrl.value / (data->saturation.maximum - data->saturation.minimum);
                }
@@ -501,7 +518,7 @@ IDirectFBVideoProvider_V4L_GetColorAdjus
      else
 #endif
      {
-          ioctl( data->fd, VIDIOCGPICT, &pic );
+          v4l2_ioctl( data->fd, VIDIOCGPICT, &pic );
 
           adj->flags = DCAF_BRIGHTNESS | DCAF_CONTRAST | DCAF_HUE | DCAF_SATURATION;
 
@@ -533,28 +550,28 @@ IDirectFBVideoProvider_V4L_SetColorAdjus
           if ((adj->flags & DCAF_BRIGHTNESS) && data->brightness.id) {
                ctrl.id = data->brightness.id;
                ctrl.value = (adj->brightness * (data->brightness.maximum - data->brightness.minimum)) / 0xfff;
-               ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
+               v4l2_ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
           }
           if ((adj->flags & DCAF_CONTRAST) && data->contrast.id) {
                ctrl.id = data->contrast.id;
                ctrl.value = (adj->contrast * (data->contrast.maximum - data->contrast.minimum)) / 0xfff;
-               ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
+               v4l2_ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
           }
           if ((adj->flags & DCAF_HUE) && data->hue.id) {
                ctrl.id = data->hue.id;
                ctrl.value = (adj->hue * (data->hue.maximum - data->hue.minimum)) / 0xfff;
-               ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
+               v4l2_ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
           }
           if ((adj->flags & DCAF_SATURATION) && data->saturation.id) {
                ctrl.id = data->saturation.id;
                ctrl.value = (adj->saturation * (data->saturation.maximum - data->saturation.minimum)) / 0xfff;
-               ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
+               v4l2_ioctl( data->fd, VIDIOC_S_CTRL, &ctrl );
           }
      }
      else
 #endif
      {
-          if (ioctl( data->fd, VIDIOCGPICT, &pic ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCGPICT, &pic ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCGPICT failed!\n" );
@@ -567,7 +584,7 @@ IDirectFBVideoProvider_V4L_SetColorAdjus
           if (adj->flags & DCAF_HUE)        pic.hue        = adj->hue;
           if (adj->flags & DCAF_SATURATION) pic.colour     = adj->saturation;
 
-          if (ioctl( data->fd, VIDIOCSPICT, &pic ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCSPICT, &pic ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCSPICT failed!\n" );
@@ -627,11 +644,11 @@ Construct( IDirectFBVideoProvider *thiz,
 
      buffer_data = (IDirectFBDataBuffer_data*) buffer->priv;
 
-     fd = open( buffer_data->filename, O_RDWR );     
+     fd = v4l2_open( buffer_data->filename, O_RDWR );
      if (fd < 0) {
           DFBResult ret = errno2result( errno );
 
-          D_PERROR( "DirectFB/Video4Linux: Cannot open `%s'!\n",
+          D_PERROR( "DirectFB/Video4Linux: Cannot v4l2_open `%s'!\n",
                      buffer_data->filename );
 
           DIRECT_DEALLOCATE_INTERFACE( thiz );
@@ -644,7 +661,7 @@ Construct( IDirectFBVideoProvider *thiz,
      data->is_v4l2 = 0;
 
      /* look if the device is a v4l2 device */
-     if (!ioctl( fd, VIDIOC_QUERYCAP, &data->caps )) {
+     if (!v4l2_ioctl( fd, VIDIOC_QUERYCAP, &data->caps )) {
           D_INFO( "DirectFB/Video4Linux: This is a Video4Linux-2 device.\n" );
           data->is_v4l2 = 1;
      }
@@ -657,12 +674,12 @@ Construct( IDirectFBVideoProvider *thiz,
      {
           D_INFO( "DirectFB/Video4Linux: This is a Video4Linux-1 device.\n" );
 
-          ioctl( fd, VIDIOCGCAP, &data->vcap );
-          ioctl( fd, VIDIOCCAPTURE, &zero );
+          v4l2_ioctl( fd, VIDIOCGCAP, &data->vcap );
+          v4l2_ioctl( fd, VIDIOCCAPTURE, &zero );
 
-          ioctl( fd, VIDIOCGMBUF, &data->vmbuf );
+          v4l2_ioctl( fd, VIDIOCGMBUF, &data->vmbuf );
 
-          data->buffer = mmap( NULL, data->vmbuf.size,
+          data->buffer = v4l2_mmap( NULL, data->vmbuf.size,
                                PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
      }
 
@@ -745,7 +762,7 @@ GrabThread( DirectThread *thread, void *
 
      while (frame < data->vmbuf.frames) {
           data->vmmap.frame = frame;
-          ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap );
+          v4l2_ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap );
           frame++;
      }
 
@@ -756,7 +773,7 @@ GrabThread( DirectThread *thread, void *
 
      frame = 0;
      while (data->running) {
-          ioctl( data->fd, VIDIOCSYNC, &frame );
+          v4l2_ioctl( data->fd, VIDIOCSYNC, &frame );
 
           if (!data->running)
                break;
@@ -800,7 +817,7 @@ GrabThread( DirectThread *thread, void *
           dfb_surface_unlock_buffer( surface, &data->destinationlock );
 
           data->vmmap.frame = frame;
-          ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap );
+          v4l2_ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap );
 
           if (!data->running)
                break;
@@ -943,7 +960,7 @@ v4l_to_surface_overlay( CoreSurface *sur
           b.depth = bpp;
           b.bytesperline = lock->pitch;
 
-          if (ioctl( data->fd, VIDIOCSFBUF, &b ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCSFBUF, &b ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCSFBUF failed, must run being root!\n" );
@@ -954,7 +971,7 @@ v4l_to_surface_overlay( CoreSurface *sur
      {
           struct video_picture p;
 
-          if (ioctl( data->fd, VIDIOCGPICT, &p ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCGPICT, &p ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCGPICT failed!\n" );
@@ -965,7 +982,7 @@ v4l_to_surface_overlay( CoreSurface *sur
           p.depth = bpp;
           p.palette = palette;
 
-          if (ioctl( data->fd, VIDIOCSPICT, &p ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCSPICT, &p ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCSPICT failed!\n" );
@@ -985,7 +1002,7 @@ v4l_to_surface_overlay( CoreSurface *sur
           win.clipcount = 0;
           win.chromakey = 0;
 
-          if (ioctl( data->fd, VIDIOCSWIN, &win ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOCSWIN, &win ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux: VIDIOCSWIN failed!\n" );
@@ -997,7 +1014,7 @@ v4l_to_surface_overlay( CoreSurface *sur
      if (!data->cleanup)
           data->cleanup = dfb_core_cleanup_add( NULL, v4l_cleanup, data, true );
 
-     if (ioctl( data->fd, VIDIOCCAPTURE, &one ) < 0) {
+     if (v4l2_ioctl( data->fd, VIDIOCCAPTURE, &one ) < 0) {
           DFBResult ret = errno2result( errno );
 
           D_PERROR( "DirectFB/Video4Linux: Could not start capturing (VIDIOCCAPTURE failed)!\n" );
@@ -1062,7 +1079,7 @@ v4l_to_surface_grab( CoreSurface *surfac
      data->vmmap.height = surface->config.size.h;
      data->vmmap.format = palette;
      data->vmmap.frame = 0;
-     if (ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap ) < 0) {
+     if (v4l2_ioctl( data->fd, VIDIOCMCAPTURE, &data->vmmap ) < 0) {
           DFBResult ret = errno2result( errno );
 
           D_PERROR( "DirectFB/Video4Linux: Could not start capturing (VIDIOCMCAPTURE failed)!\n" );
@@ -1110,7 +1127,7 @@ v4l_stop( IDirectFBVideoProvider_V4L_dat
      if (data->is_v4l2) {
           /* turn off streaming */
           int type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-          int err = ioctl( data->fd, VIDIOC_STREAMOFF, &type );
+          int err = v4l2_ioctl( data->fd, VIDIOC_STREAMOFF, &type );
           if (err) {
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_STREAMOFF.\n" );
                /* don't quit here */
@@ -1120,7 +1137,7 @@ v4l_stop( IDirectFBVideoProvider_V4L_dat
 #endif
      {
           if (!data->grab_mode) {
-               if (ioctl( data->fd, VIDIOCCAPTURE, &zero ) < 0)
+               if (v4l2_ioctl( data->fd, VIDIOCCAPTURE, &zero ) < 0)
                     D_PERROR( "DirectFB/Video4Linux: "
                               "Could not stop capturing (VIDIOCCAPTURE failed)!\n" );
           }
@@ -1141,8 +1158,8 @@ v4l_stop( IDirectFBVideoProvider_V4L_dat
                for (i = 0; i < data->req.count; i++) {
                     struct v4l2_buffer *vidbuf = &data->vidbuf[i];
                     D_DEBUG( "DirectFB/Video4Linux2: %d => 0x%08x, len:%d\n", i, (u32) data->ptr[i], vidbuf->length );
-                    if (munmap( data->ptr[i], vidbuf->length )) {
-                         D_PERROR( "DirectFB/Video4Linux2: munmap().\n" );
+                    if (v4l2_munmap( data->ptr[i], vidbuf->length )) {
+                         D_PERROR( "DirectFB/Video4Linux2: v4l2_munmap().\n" );
                     }
                }
           }
@@ -1177,8 +1194,8 @@ v4l_deinit( IDirectFBVideoProvider_V4L_d
 
      v4l_stop( data, true );
 
-     munmap( data->buffer, data->vmbuf.size );
-     close( data->fd );
+     v4l2_munmap( data->buffer, data->vmbuf.size );
+     v4l2_close( data->fd );
      data->fd = -1;
 }
 
@@ -1223,7 +1240,7 @@ wait_for_buffer( int vid, struct v4l2_bu
           return -1;     /* fixme */
      }
      else if (FD_ISSET( vid, &rdset )) {
-          err = ioctl( vid, VIDIOC_DQBUF, cur );
+          err = v4l2_ioctl( vid, VIDIOC_DQBUF, cur );
           if (err) {
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_DQBUF.\n" );
                return -1;     /* fixme */
@@ -1255,7 +1272,7 @@ V4L2_Thread( DirectThread *thread, void 
                vidbuf->m.offset = data->destinationlock.offset;
           }
 
-          err = ioctl( data->fd, VIDIOC_QBUF, vidbuf );
+          err = v4l2_ioctl( data->fd, VIDIOC_QBUF, vidbuf );
           if (err) {
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_QBUF.\n" );
                return NULL;
@@ -1263,7 +1280,7 @@ V4L2_Thread( DirectThread *thread, void 
      }
 
      /* start streaming */
-     if (ioctl( data->fd, VIDIOC_STREAMON, &type )) {
+     if (v4l2_ioctl( data->fd, VIDIOC_STREAMON, &type )) {
           D_PERROR( "DirectFB/Video4Linux2: VIDIOC_STREAMON.\n" );
           return NULL;   /* fixme */
      }
@@ -1334,7 +1351,7 @@ V4L2_Thread( DirectThread *thread, void 
           if (data->callback)
                data->callback( data->ctx );
 
-          if (ioctl( data->fd, VIDIOC_QBUF, &cur )) {
+          if (v4l2_ioctl( data->fd, VIDIOC_QBUF, &cur )) {
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_QBUF.\n" );
                return NULL;
           }
@@ -1406,7 +1423,7 @@ v4l2_playto( CoreSurface *surface, DFBRe
 
      D_DEBUG( "DirectFB/Video4Linux2: surface->config.size.w:%d, surface->config.size.h:%d.\n", surface->config.size.w, surface->config.size.h );
 
-     err = ioctl( data->fd, VIDIOC_S_FMT, &data->fmt );
+     err = v4l2_ioctl( data->fd, VIDIOC_S_FMT, &data->fmt );
      if (err) {
           D_PERROR( "DirectFB/Video4Linux2: VIDIOC_S_FMT.\n" );
           dfb_surface_unlock_buffer( surface, &data->destinationlock );
@@ -1420,16 +1437,16 @@ v4l2_playto( CoreSurface *surface, DFBRe
      }
 
      if (data->brightness.id) {
-          ioctl( data->fd, VIDIOC_G_CTRL, &data->brightness );
+          v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->brightness );
      }
      if (data->contrast.id) {
-          ioctl( data->fd, VIDIOC_G_CTRL, &data->contrast );
+          v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->contrast );
      }
      if (data->saturation.id) {
-          ioctl( data->fd, VIDIOC_G_CTRL, &data->saturation );
+          v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->saturation );
      }
      if (data->hue.id) {
-          ioctl( data->fd, VIDIOC_G_CTRL, &data->hue );
+          v4l2_ioctl( data->fd, VIDIOC_G_CTRL, &data->hue );
      }
 
      if (surface->config.caps & DSCAPS_SYSTEMONLY) {
@@ -1451,7 +1468,7 @@ v4l2_playto( CoreSurface *surface, DFBRe
           D_DEBUG( "w:%d, h:%d, bpl:%d, base:0x%08lx\n",
                    fb.fmt.width, fb.fmt.height, fb.fmt.bytesperline, (unsigned long)fb.base );
 
-          if (ioctl( data->fd, VIDIOC_S_FBUF, &fb ) < 0) {
+          if (v4l2_ioctl( data->fd, VIDIOC_S_FBUF, &fb ) < 0) {
                DFBResult ret = errno2result( errno );
 
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_S_FBUF failed, must run being root!\n" );
@@ -1464,7 +1481,7 @@ v4l2_playto( CoreSurface *surface, DFBRe
      /* Ask Video Device for Buffers */
      data->req.count = NUMBER_OF_BUFFERS;
      data->req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-     err = ioctl( data->fd, VIDIOC_REQBUFS, &data->req );
+     err = v4l2_ioctl( data->fd, VIDIOC_REQBUFS, &data->req );
      if (err < 0 || data->req.count < NUMBER_OF_BUFFERS) {
           D_PERROR( "DirectFB/Video4Linux2: VIDIOC_REQBUFS: %d, %d.\n", err, data->req.count );
           if (!data->framebuffer_or_system)
@@ -1479,7 +1496,7 @@ v4l2_playto( CoreSurface *surface, DFBRe
           vidbuf->index = i;
           vidbuf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 
-          err = ioctl( data->fd, VIDIOC_QUERYBUF, vidbuf );
+          err = v4l2_ioctl( data->fd, VIDIOC_QUERYBUF, vidbuf );
           if (err < 0) {
                D_PERROR( "DirectFB/Video4Linux2: VIDIOC_QUERYBUF.\n" );
                if (!data->framebuffer_or_system)
@@ -1494,9 +1511,9 @@ v4l2_playto( CoreSurface *surface, DFBRe
           }
 */
           if (data->framebuffer_or_system) {
-               data->ptr[i] = mmap( 0, vidbuf->length, PROT_READ | PROT_WRITE, MAP_SHARED, data->fd, vidbuf->m.offset );
+               data->ptr[i] = v4l2_mmap( 0, vidbuf->length, PROT_READ | PROT_WRITE, MAP_SHARED, data->fd, vidbuf->m.offset );
                if (data->ptr[i] == MAP_FAILED) {
-                    D_PERROR( "DirectFB/Video4Linux2: mmap().\n" );
+                    D_PERROR( "DirectFB/Video4Linux2: v4l2_mmap().\n" );
                     if (!data->framebuffer_or_system)
                          dfb_surface_unlock_buffer( surface, &data->destinationlock );
                     return err;
diff -up DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/Makefile.am.libv4l2 DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/Makefile.am
--- DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/Makefile.am.libv4l2	2009-01-20 13:50:58.000000000 +0100
+++ DirectFB-1.2.7/interfaces/IDirectFBVideoProvider/Makefile.am	2009-01-21 13:39:45.000000000 +0100
@@ -22,7 +22,8 @@ INCLUDES = \
 	-I$(top_builddir)/lib	\
 	-I$(top_srcdir)/lib	\
 	-I$(top_srcdir)/src	\
-	-DDATADIR=\"${RUNTIME_SYSROOT}@DATADIR@\"
+	-DDATADIR=\"${RUNTIME_SYSROOT}@DATADIR@\" \
+	$(LIBV4L2_CFLAGS)
 
 
 idirectfbvideoprovider_LTLIBRARIES =	\
@@ -41,7 +42,8 @@ libidirectfbvideoprovider_v4l_la_LDFLAGS
 libidirectfbvideoprovider_v4l_la_LIBADD = \
 	$(top_builddir)/lib/direct/libdirect.la \
 	$(top_builddir)/lib/fusion/libfusion.la \
-	$(top_builddir)/src/libdirectfb.la
+	$(top_builddir)/src/libdirectfb.la \
+	$(LIBV4L2_LIBS)
 
 
 libidirectfbvideoprovider_gif_la_SOURCES = idirectfbvideoprovider_gif.c


Index: directfb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/directfb/F-10/directfb.spec,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- directfb.spec	23 Oct 2008 11:14:39 -0000	1.20
+++ directfb.spec	13 Feb 2009 01:01:00 -0000	1.21
@@ -1,21 +1,26 @@
 Summary: Graphics abstraction library for the Linux Framebuffer Device
 Name: directfb
-Version: 1.2.6
-Release: 3%{?dist}
+Version: 1.2.7
+Release: 1%{?dist}
 Group: System Environment/Libraries
 License: LGPLv2+
 URL: http://www.directfb.org/
-Source: http://www.directfb.org/downloads/Core/DirectFB-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+Source0: http://www.directfb.org/downloads/Core/DirectFB-%{version}.tar.gz
+Patch0: DirectFB-1.2.7-libv4l2.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires: libtool
+
 BuildRequires: libpng-devel
 BuildRequires: zlib-devel
 BuildRequires: libjpeg-devel
 BuildRequires: freetype-devel
 BuildRequires: SDL-devel
 BuildRequires: libsysfs-devel
+BuildRequires: libv4l-devel
 BuildRequires: libvncserver-devel
-%{?_with_linux-fusion:BuildRequires: linux-fusion-devel}
-%{?_with_linux-fusion:Requires: linux-fusion}
+%{?_with_fusion:BuildRequires: linux-fusion-devel}
+%{?_with_fusion:Requires: linux-fusion}
 
 
 %description
@@ -30,7 +35,7 @@
 for graphics under Linux.
 
 Non-default rpmbuild options:
---with linux-fusion:   Enable linux-fusion support
+--with fusion:   Enable linux-fusion support
 
 
 %package devel
@@ -40,7 +45,7 @@
 Requires: pkgconfig
 Requires: zlib-devel
 Requires: libsysfs-devel
-%{?_with_linux-fusion:Requires: linux-fusion-devel}
+%{?_with_fusion:Requires: linux-fusion-devel}
 
 %description devel
 Development files for DirectFB.
@@ -48,21 +53,34 @@
 
 %prep
 %setup -q -n DirectFB-%{version}
+%patch0 -p1 -b .libv4l2
 
 #Disable ppc asm since compilation fails (and it seems better to use glibc)
 sed -i.noppcasm -e 's/want_ppcasm=yes/want_ppcasm=no/'g configure.in configure
 
-# Remove executable bit from sources
-find . \( -name '*.c' -o -name '*.h' \) -a -perm 755 -exec chmod -x {} \;
+# Fix file-not-utf8
+for i in ChangeLog README NEWS AUTHORS ; do
+cp -pr $i $i.not-utf8
+iconv -f ISO_8859-1 -t UTF8 $i.not-utf8 > $i
+touch -r $i.not-utf8 $i
+rm $i.not-utf8
+done
+
+#Remove old headers
+rm interfaces/IDirectFBVideoProvider/{videodev.h,videodev2.h}
+
+autoreconf -i -f
 
 
 %build
 %configure \
     --enable-sdl \
     --enable-zlib \
-%{?_with_linux-fusion:  --enable-multi } \
+%{?_with_fusion:--enable-multi} \
     --enable-unique \
-    --enable-video4linux2
+    --enable-video4linux2 \
+    --enable-libv4l2 \
+    --with-tests
 
 # Remove rpath for 64bit
 sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
@@ -76,11 +94,18 @@
 %{__make} DESTDIR=%{buildroot} install INSTALL="install -p"
 find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
 
+#Fix some relative fonts for dfbinspector.c
+ln -s ../fonts/dejavu/DejaVuSans.ttf %{buildroot}%{_datadir}/%{name}-%{version}/decker.ttf
+
+
+%check
+make check
 
 %clean
 %{__rm} -rf %{buildroot}
 
 
+
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
@@ -134,6 +159,12 @@
 
 
 %changelog
+* Tue Jan 20 2009 kwizart < kwizart at gmail.com > - 1.2.7-1
+- Update to 1.2.7
+- Fix decker.ttf path
+- Add libv4l2 support
+- Fix doc encoding
+
 * Wed Oct 22 2008 kwizart < kwizart at gmail.com > - 1.2.6-3
 - Disable the sorelease downgrade
 - Exclude directfb-config - Fix multiarch conflicts #341011.




More information about the fedora-extras-commits mailing list