Remove DirectFBGL header from Mesa bacause since 1.0.0 DirectFB installs its own header.

Updated to the current DirectFBGL interface (i.e. added GetProcAddress()).
This commit is contained in:
Claudio Ciccani 2006-12-01 14:12:05 +00:00
parent 682393944c
commit 73fdecca9f
7 changed files with 65 additions and 33 deletions

View file

@ -6,7 +6,7 @@ Requirements
============
To build Mesa with DirectFB (DirectFBGL) support you need:
- DirectFB at least 0.9.21 (http://directfb.org)
- DirectFB at least 1.0.0 (http://directfb.org)
- pkg-config at least 0.9 (http://pkgconfig.sf.net)

View file

@ -27,9 +27,9 @@
#include <math.h>
#include <directfb.h>
#include <directfbgl.h>
#include <GL/gl.h>
#include <GL/directfbgl.h>
/* the super interface */

View file

@ -159,9 +159,9 @@ So the angle is:
#include <unistd.h>
#include <directfb.h>
#include <directfbgl.h>
#include <GL/gl.h>
#include <GL/directfbgl.h>
/* the super interface */

View file

@ -27,9 +27,9 @@
#include <math.h>
#include <directfb.h>
#include <directfbgl.h>
#include <GL/glu.h>
#include <GL/directfbgl.h>
#include "util/showbuffer.c"
#include "util/readtex.c"

View file

@ -156,6 +156,13 @@ glutGetProcAddress( const char *name )
return glut_functions[i].address;
}
#if DIRECTFBGL_INTERFACE_VERSION >= 1
if (g_current) {
void *address = NULL;
g_current->gl->GetProcAddress( g_current->gl, name, &address );
return address;
}
#endif
return NULL;
}

View file

@ -26,8 +26,9 @@
#include <directfb.h>
#include <directfb_version.h>
#include <directfbgl.h>
#include "GL/glut.h"
#include "GL/directfbgl.h"
#define VERSION_CODE( M, m, r ) (((M) << 16) | ((m) << 8) | ((r)))

View file

@ -25,24 +25,16 @@
#include <pthread.h>
#include <direct/messages.h>
#include <direct/interface.h>
#include <direct/mem.h>
#include <directfb.h>
#include <directfb_version.h>
#define VERSION_CODE( M, m, r ) (((M) * 1000) + ((m) * 100) + ((r)))
#define DIRECTFB_VERSION_CODE VERSION_CODE( DIRECTFB_MAJOR_VERSION, \
DIRECTFB_MINOR_VERSION, \
DIRECTFB_MICRO_VERSION )
#include <directfbgl.h>
#include <direct/mem.h>
#include <direct/messages.h>
#include <direct/interface.h>
#ifdef CLAMP
# undef CLAMP
#endif
#include "GL/directfbgl.h"
#undef CLAMP
#include "glheader.h"
#include "buffers.h"
#include "context.h"
@ -62,6 +54,12 @@
#include "drivers/common/driverfuncs.h"
#define VERSION_CODE( M, m, r ) (((M) * 1000) + ((m) * 100) + ((r)))
#define DIRECTFB_VERSION_CODE VERSION_CODE( DIRECTFB_MAJOR_VERSION, \
DIRECTFB_MINOR_VERSION, \
DIRECTFB_MICRO_VERSION )
static DFBResult
Probe( void *data );
@ -79,7 +77,7 @@ DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBGL, Mesa )
typedef struct {
int ref; /* reference counter */
DFBBoolean locked;
int locked;
IDirectFBSurface *surface;
DFBSurfacePixelFormat format;
@ -189,8 +187,10 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
DIRECT_INTERFACE_GET_DATA( IDirectFBGL );
if (data->locked)
return DFB_LOCKED;
if (data->locked) {
data->locked++;
return DFB_OK;
}
if (directfbgl_lock())
return DFB_LOCKED;
@ -202,6 +202,7 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
(void*)&data->video.start, &data->video.pitch );
if (ret) {
D_ERROR( "DirectFBGL/Mesa: couldn't lock surface.\n" );
directfbgl_unlock();
return ret;
}
data->video.end = data->video.start + (height-1) * data->video.pitch;
@ -218,7 +219,7 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
&data->framebuffer, width, height);
}
data->locked = DFB_TRUE;
data->locked++;
return DFB_OK;
}
@ -230,14 +231,14 @@ IDirectFBGL_Mesa_Unlock( IDirectFBGL *thiz )
if (!data->locked)
return DFB_OK;
_mesa_make_current( NULL, NULL, NULL );
if (--data->locked == 0) {
_mesa_make_current( NULL, NULL, NULL );
data->surface->Unlock( data->surface );
data->surface->Unlock( data->surface );
directfbgl_unlock();
data->locked = DFB_FALSE;
directfbgl_unlock();
}
return DFB_OK;
}
@ -276,6 +277,26 @@ IDirectFBGL_Mesa_GetAttributes( IDirectFBGL *thiz,
return DFB_OK;
}
#if DIRECTFBGL_INTERFACE_VERSION >= 1
static DFBResult
IDirectFBGL_Mesa_GetProcAddress( IDirectFBGL *thiz,
const char *name,
void **ret_address )
{
DIRECT_INTERFACE_GET_DATA( IDirectFBGL );
if (!name)
return DFB_INVARG;
if (!ret_address)
return DFB_INVARG;
*ret_address = _glapi_get_proc_address( name );
return (*ret_address) ? DFB_OK : DFB_UNSUPPORTED;
}
#endif
/* exported symbols */
@ -326,11 +347,14 @@ Construct( IDirectFBGL *thiz, IDirectFBSurface *surface )
}
/* Assign interface pointers. */
thiz->AddRef = IDirectFBGL_Mesa_AddRef;
thiz->Release = IDirectFBGL_Mesa_Release;
thiz->Lock = IDirectFBGL_Mesa_Lock;
thiz->Unlock = IDirectFBGL_Mesa_Unlock;
thiz->GetAttributes = IDirectFBGL_Mesa_GetAttributes;
thiz->AddRef = IDirectFBGL_Mesa_AddRef;
thiz->Release = IDirectFBGL_Mesa_Release;
thiz->Lock = IDirectFBGL_Mesa_Lock;
thiz->Unlock = IDirectFBGL_Mesa_Unlock;
thiz->GetAttributes = IDirectFBGL_Mesa_GetAttributes;
#if DIRECTFBGL_INTERFACE_VERSION >= 1
thiz->GetProcAddress = IDirectFBGL_Mesa_GetProcAddress;
#endif
return DFB_OK;
}