[MPlayer-cvslog] r20118 - in trunk: configure libvo/vo_dfbmga.c libvo/vo_directfb2.c
syrjala
subversion at mplayerhq.hu
Mon Oct 9 00:16:39 CEST 2006
Author: syrjala
Date: Mon Oct 9 00:16:38 2006
New Revision: 20118
Modified:
trunk/configure
trunk/libvo/vo_dfbmga.c
trunk/libvo/vo_directfb2.c
Log:
Fix DirectFB version check. The old code simply concatenated the
digits, so 1.0.0 was considered older than 0.9.XY.
Modified: trunk/configure
==============================================================================
--- trunk/configure (original)
+++ trunk/configure Mon Oct 9 00:16:38 2006
@@ -3759,17 +3759,25 @@
fi
fi
+dfb_version() {
+ expr $1 \* 65536 + $2 \* 256 + $3
+}
+
if test "$_directfb" = yes; then
cat > $TMPC << EOF
#include <directfb_version.h>
int
-dfb_ver = DIRECTFB_MAJOR_VERSION DIRECTFB_MINOR_VERSION DIRECTFB_MICRO_VERSION
+dfb_ver = DIRECTFB_MAJOR_VERSION.DIRECTFB_MINOR_VERSION.DIRECTFB_MICRO_VERSION
;
EOF
if $_cc -E $TMPC $_inc_extra > "$TMPO"; then
- _directfb_version=`sed -n 's/^dfb_ver[^1-9]*\(.*\)/\1/p' "$TMPO" | tr -d '() '`
- _def_directfb_version="#define DIRECTFBVERSION $_directfb_version"
- if test "$_directfb_version" -ge 913; then
+ _directfb_version=`sed -n 's/^dfb_ver[^0-9]*\(.*\)/\1/p' "$TMPO" | tr -d '()'`
+ _dfb_major=`echo $_directfb_version | cut -d . -f 1`
+ _dfb_minor=`echo $_directfb_version | cut -d . -f 2`
+ _dfb_micro=`echo $_directfb_version | cut -d . -f 3`
+ _dfb_version=$(dfb_version $_dfb_major $_dfb_minor $_dfb_micro)
+ if test "$_dfb_version" -ge $(dfb_version 0 9 13); then
+ _def_directfb_version="#define DIRECTFBVERSION $_dfb_version"
_res_comment="$_directfb_version"
else
_def_directfb_version='#undef DIRECTFBVERSION'
@@ -3785,13 +3793,13 @@
if test "$_directfb" = yes ; then
_def_directfb='#define HAVE_DIRECTFB 1'
- if test "$_directfb_version" -ge 913; then
+ if test "$_dfb_version" -ge $(dfb_version 0 9 13); then
_vosrc="$_vosrc vo_directfb2.c"
_vomodules="directfb $_vomodules"
_ld_directfb='-ldirectfb'
fi
- if test "$_directfb_version" -ge 915; then
+ if test "$_dfb_version" -ge $(dfb_version 0 9 15); then
_vosrc="$_vosrc vo_dfbmga.c"
_vomodules="dfbmga $_vomodules"
fi
Modified: trunk/libvo/vo_dfbmga.c
==============================================================================
--- trunk/libvo/vo_dfbmga.c (original)
+++ trunk/libvo/vo_dfbmga.c Mon Oct 9 00:16:38 2006
@@ -25,6 +25,8 @@
/* directfb includes */
#include <directfb.h>
+#define DFB_VERSION(a,b,c) (((a)<<16)|((b)<<8)|(c))
+
/* other things */
#include <stdio.h>
#include <stdlib.h>
@@ -108,13 +110,13 @@
* vo_dfbmga *
******************************/
-#if DIRECTFBVERSION < 918
+#if DIRECTFBVERSION < DFB_VERSION(0,9,18)
#define DSPF_ALUT44 DSPF_LUT8
#define DLBM_TRIPLE ~0
#define DSFLIP_ONSYNC 0
#endif
-#if DIRECTFBVERSION < 916
+#if DIRECTFBVERSION < DFB_VERSION(0,9,16)
#define DSPF_ARGB1555 DSPF_RGB15
#endif
@@ -149,7 +151,7 @@
return "I420";
case DSPF_ALUT44:
return "ALUT44";
-#if DIRECTFBVERSION > 921
+#if DIRECTFBVERSION > DFB_VERSION(0,9,21)
case DSPF_NV12:
return "NV12";
case DSPF_NV21:
@@ -181,7 +183,7 @@
case IMGFMT_I420:
case IMGFMT_IYUV:
return DSPF_I420;
-#if DIRECTFBVERSION > 921
+#if DIRECTFBVERSION > DFB_VERSION(0,9,21)
case IMGFMT_NV12:
return DSPF_NV12;
case IMGFMT_NV21:
@@ -206,7 +208,7 @@
{
struct layer_enum *l = (struct layer_enum *) data;
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
/* We have desc.name so use it */
if (!strcmp( l->name, desc.name ))
if ((l->res = dfb->GetDisplayLayer( dfb, id, l->layer )) == DFB_OK)
@@ -237,7 +239,7 @@
use_crtc2 = 1;
use_spic = 1;
field_parity = -1;
-#if DIRECTFBVERSION > 917
+#if DIRECTFBVERSION > DFB_VERSION(0,9,17)
buffermode = DLBM_TRIPLE;
osd_max = 4;
#else
@@ -479,7 +481,7 @@
if (use_crtc2) {
struct layer_enum l = {
-#if DIRECTFBVERSION > 920
+#if DIRECTFBVERSION > DFB_VERSION(0,9,20)
"Matrox CRTC2 Layer",
#else
"Matrox CRTC2",
@@ -694,7 +696,7 @@
dlc.buffermode = buffermode;
dlc.options = DLOP_NONE;
-#if DIRECTFBVERSION > 916
+#if DIRECTFBVERSION > DFB_VERSION(0,9,16)
if (field_parity != -1) {
dlc.options |= DLOP_FIELD_PARITY;
}
@@ -742,7 +744,7 @@
return -1;
}
-#if DIRECTFBVERSION > 916
+#if DIRECTFBVERSION > DFB_VERSION(0,9,16)
if (field_parity != -1)
crtc2->SetFieldParity( crtc2, field_parity );
#endif
@@ -822,7 +824,7 @@
dlc.pixelformat = DSPF_ALUT44;
dlc.buffermode = buffermode;
-#if DIRECTFBVERSION > 916
+#if DIRECTFBVERSION > DFB_VERSION(0,9,16)
dlc.flags |= DLCONF_OPTIONS;
dlc.options = DLOP_ALPHACHANNEL;
#endif
@@ -903,7 +905,7 @@
return 0;
case IMGFMT_YUY2:
break;
-#if DIRECTFBVERSION > 921
+#if DIRECTFBVERSION > DFB_VERSION(0,9,21)
case IMGFMT_NV12:
case IMGFMT_NV21:
if (!use_bes || use_crtc2)
@@ -1012,7 +1014,7 @@
((uint8_t *) dst) + pitch * y0 + 2 * x0 + 1,
pitch );
break;
-#if DIRECTFBVERSION > 921
+#if DIRECTFBVERSION > DFB_VERSION(0,9,21)
case DSPF_NV12:
case DSPF_NV21:
#endif
@@ -1050,7 +1052,7 @@
y /= 2;
h /= 2;
-#if DIRECTFBVERSION > 921
+#if DIRECTFBVERSION > DFB_VERSION(0,9,21)
if (frame_format == DSPF_NV12 || frame_format == DSPF_NV21) {
memcpy_pic( dst + pitch * y + x, src[1],
w, h, pitch, stride[1] );
@@ -1090,7 +1092,7 @@
DFBRectangle *srect = NULL;
if (use_bes) {
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
if (vo_vsync && !flipping && !use_crtc2)
bes->WaitForSync( bes );
#endif
@@ -1101,7 +1103,7 @@
}
if (use_crtc2) {
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
if (vo_vsync && !flipping)
crtc2->WaitForSync( crtc2 );
#endif
Modified: trunk/libvo/vo_directfb2.c
==============================================================================
--- trunk/libvo/vo_directfb2.c (original)
+++ trunk/libvo/vo_directfb2.c Mon Oct 9 00:16:38 2006
@@ -25,6 +25,8 @@
#include <directfb.h>
+#define DFB_VERSION(a,b,c) (((a)<<16)|((b)<<8)|(c))
+
// other things
#include <stdio.h>
@@ -50,7 +52,7 @@
#define min(x,y) (((x)<(y))?(x):(y))
#endif
-#if DIRECTFBVERSION > 917
+#if DIRECTFBVERSION > DFB_VERSION(0,9,17)
// triple buffering
#define TRIPLE 1
#endif
@@ -273,7 +275,7 @@
DFBCHECK (DirectFBCreate (&dfb));
-#if DIRECTFBVERSION < 917
+#if DIRECTFBVERSION < DFB_VERSION(0,9,17)
if (DFB_OK != dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN)) {
mp_msg(MSGT_VO, MSGL_WARN,"DirectFB: Warning - cannot swith to fullscreen mode");
};
@@ -318,7 +320,7 @@
case IMGFMT_BGR24: return DSPF_RGB24; break;
case IMGFMT_RGB16: return DSPF_RGB16; break;
case IMGFMT_BGR16: return DSPF_RGB16; break;
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
case IMGFMT_RGB15: return DSPF_ARGB1555; break;
case IMGFMT_BGR15: return DSPF_ARGB1555; break;
#else
@@ -568,7 +570,7 @@
} // vm end
// just for sure clear primary layer
-#if DIRECTFBVERSION > 913
+#if DIRECTFBVERSION > DFB_VERSION(0,9,13)
ret = dfb->GetDisplayLayer( dfb, DLID_PRIMARY, &layer);
if (ret==DFB_OK) {
ret = layer->GetSurface(layer,&primary);
@@ -609,7 +611,7 @@
DFBCHECK (dfb->GetDisplayLayer( dfb, params.id, &layer));
-#if DIRECTFBVERSION > 916
+#if DIRECTFBVERSION > DFB_VERSION(0,9,16)
mp_msg(MSGT_VO, MSGL_INFO,"DirectFB: Config - switching layer to exclusive mode\n");
ret = layer->SetCooperativeLevel (layer, DLSCL_EXCLUSIVE);
@@ -667,7 +669,7 @@
case DSPF_RGB32: bpp=32;break;
case DSPF_RGB24: bpp=24;break;
case DSPF_RGB16: bpp=16;break;
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
case DSPF_ARGB1555: bpp=15;break;
#else
case DSPF_RGB15: bpp=15;break;
@@ -680,7 +682,7 @@
case DSPF_RGB32:
case DSPF_RGB24:
case DSPF_RGB16:
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
case DSPF_ARGB1555:
#else
case DSPF_RGB15:
@@ -751,7 +753,7 @@
}
#endif
-#if DIRECTFBVERSION > 916
+#if DIRECTFBVERSION > DFB_VERSION(0,9,16)
if (field_parity != -1) {
dlc.flags = DLCONF_OPTIONS;
ret = layer->GetConfiguration( layer, &dlc );
@@ -790,7 +792,7 @@
// test surface for flipping
DFBCHECK(primary->GetCapabilities(primary,&caps));
-#if DIRECTFBVERSION > 913
+#if DIRECTFBVERSION > DFB_VERSION(0,9,13)
primary->Clear(primary,0,0,0,0xff);
#endif
flipping = 0;
@@ -802,7 +804,7 @@
ret = primary->Flip(primary,NULL,0);
if (ret==DFB_OK) {
flipping = 1;
-#if DIRECTFBVERSION > 913
+#if DIRECTFBVERSION > DFB_VERSION(0,9,13)
primary->Clear(primary,0,0,0,0xff);
#ifdef TRIPLE
// if we have 3 buffers clean once more
@@ -1487,7 +1489,7 @@
case DSPF_RGB16:
vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 2*x0,pitch);
break;
-#if DIRECTFBVERSION > 915
+#if DIRECTFBVERSION > DFB_VERSION(0,9,15)
case DSPF_ARGB1555:
#else
case DSPF_RGB15:
More information about the MPlayer-cvslog
mailing list