int GGIMesa_fbdev_getapi(ggi_visual *vis, int num, char *apiname, char *arguments)
{
- struct fbdev_priv_mesa *priv = GGIMESA_PRIVATE(vis);
+ struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis);
- strcpy(arguments, "");
+ arguments = '\0';
- switch(num)
- {
- case 0:
- if (priv->oldpriv->have_accel)
- {
+ switch(num) {
+ case 0:
+ if (priv->oldpriv->have_accel) {
strcpy(apiname, priv->oldpriv->accel);
return 0;
}
static int do_setmode(ggi_visual *vis)
{
- struct fbdev_priv_mesa *priv = GGIMESA_PRIVATE(vis);
+ struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis);
int err, id;
- char libname[256], libargs[256];
+ char libname[GGI_API_MAXLEN], libargs[GGI_API_MAXLEN];
ggi_graphtype gt;
_ggiZapMode(vis, ~GGI_DL_OPDISPLAY);
priv->have_accel = 0;
for (id = 1; GGIMesa_fbdev_getapi(vis, id, libname, libargs) == 0; id++)
{
- if (_ggiOpenDL(vis, libname, libargs, NULL) == 0)
- {
+ if (_ggiOpenDL(vis, libname, libargs, NULL) == 0) {
fprintf(stderr, "display-fbdev-mesa: Error opening the "
"%s (%s) library.\n", libname, libargs);
return GGI_EFATAL;
if (priv->oldpriv->accel &&
_ggiOpenDL(vis, priv->accel, NULL, NULL) != 0) {
priv->have_accel = 1;
- }
- else
- {
+ } else {
priv->have_accel = 0;
}
vis->accelactive = 0;
static int changed(ggi_visual_t vis, int whatchanged)
{
- switch (whatchanged)
- {
- case GGI_CHG_APILIST:
- {
- char api[256];
- char args[256];
- int i;
- const char *fname;
- ggi_dlhandle *lib;
+ switch (whatchanged) {
+ case GGI_CHG_APILIST: {
+ char api[GGI_API_MAXLEN], args[GGI_API_MAXLEN];
+ int i;
+ const char *fname;
+ ggi_dlhandle *lib;
- for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++)
- {
- strcat(api, "-mesa");
- fname = ggMatchConfig(_configHandle, api, NULL);
- if (fname == NULL)
- {
- /* No special implementation for this sublib */
- continue;
- }
-
- lib = ggiExtensionLoadDL(vis, fname, args, NULL, GGI_SYMNAME_PREFIX);
+ for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++) {
+ strcat(api, "-mesa");
+ fname = ggMatchConfig(_configHandle, api, NULL);
+ if (fname == NULL) {
+ /* No special implementation for this sublib */
+ continue;
}
+
+ lib = ggiExtensionLoadDL(vis, fname, args, NULL, GGI_SYMNAME_PREFIX);
}
- break;
+ }
+ break;
}
return 0;
}
-int GGIdlinit(ggi_visual *vis, const char *args, void *argptr)
+
+static int GGIopen(ggi_visual *vis, struct ggi_dlhandle *dlh,
+ const char *args, void *argptr, uint32 *dlret)
{
struct fbdev_priv_mesa *priv;
int err;
ggifunc_getapi *oldgetapi;
- GGIMESA_PRIVATE(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa));
+ GGIMESA_PRIV(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa));
if (priv == NULL) {
fprintf(stderr, "Failed to allocate fbdev private data\n");
- return GGI_DL_ERROR;
+ return GGI_ENOMEM;
}
priv->oldpriv = LIBGGI_PRIVATE(vis); /* Hook back */
err = ggLoadConfig(conffile, &_configHandle);
- if (err != GGI_OK)
- {
+ if (err != GGI_OK) {
GGIMESADPRINT_CORE("display-fbdev: Couldn't open %s\n", conffile);
return err;
}
vis->opdisplay->getapi = oldgetapi;
}
+ *dlret = GGI_DL_EXTENSION;
return 0;
}
-int GGIdlcleanup(ggi_visual *vis)
+
+static int GGIclose(ggi_visual *vis, struct ggi_dlhandle *dlh)
{
return 0;
}
+
+int MesaGGIdl_fbdev_mesa(int func, void **funcptr)
+{
+ switch (func) {
+ case GGIFUNC_open:
+ *funcptr = GGIopen;
+ return 0;
+ case GGIFUNC_exit:
+ *funcptr = NULL;
+ return 0;
+ case GGIFUNC_close:
+ *funcptr = GGIclose;
+ return 0;
+ default:
+ *funcptr = NULL;
+ }
+
+ return GGI_ENOTFOUND;
+}
+
+
#include <ggi/internal/ggidlinit.h>
GGIMESADPRINT_CORE("gl_ggiGetSize() called\n");
- *width = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.x;
- *height = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y;
+ *width = LIBGGI_VIRTX(ggi_ctx->ggi_visual);
+ *height = LIBGGI_VIRTY(ggi_ctx->ggi_visual);
printf("returning %d, %d\n", *width, *height);
}
static void gl_ggiSetClearIndex(GLcontext *ctx, GLuint ci)
{
ggi_mesa_context_t ggi_ctx = (ggi_mesa_context_t)ctx->DriverCtx;
-
+
GGIMESADPRINT_CORE("gl_ggiSetClearIndex() called\n");
-
+
ggiSetGCForeground(ggi_ctx->ggi_visual, ci);
ggi_ctx->clearcolor = (ggi_pixel)ci;
}
GGIMESADPRINT_CORE("gl_ggiClear() called\n");
- if (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT))
- {
+ if (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) {
ggiSetGCForeground(ggi_ctx->ggi_visual, ggi_ctx->clearcolor);
- if (all)
- {
+ if (all) {
int w, h;
- w = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.x;
- h = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y;
+ w = LIBGGI_VIRTX(ggi_ctx->ggi_visual);
+ h = LIBGGI_VIRTX(ggi_ctx->ggi_visual);
ggiDrawBox(ggi_ctx->ggi_visual, 0, 0, w, h);
- }
- else
- {
+ } else {
ggiDrawBox(ggi_ctx->ggi_visual, x, y, //FLIP(y),
width, height);
}
static GLboolean gl_ggiSetBuffer(GLcontext *ctx, GLframebuffer *buffer, GLuint bufferBit)
{
ggi_mesa_context_t ggi_ctx = (ggi_mesa_context_t)ctx->DriverCtx;
-
+
printf("set read %d\n", bufferBit);
GGIMESADPRINT_CORE("gl_ggiSetBuffer() called\n");
static const GLubyte * gl_ggiGetString(GLcontext *ctx, GLenum name)
{
GGIMESADPRINT_CORE("gl_ggiGetString() called\n");
-
- if (name == GL_RENDERER)
- return (GLubyte *) "Mesa GGI";
- else
+
+ if (name == GL_RENDERER) {
+ return (GLubyte *) "Mesa GGI";
+ } else {
return NULL;
+ }
}
static void gl_ggiFlush(GLcontext *ctx)
static void gl_ggiSetupPointers(GLcontext *ctx)
{
TNLcontext *tnl;
-
+
GGIMESADPRINT_CORE("gl_ggiSetupPointers() called\n");
/* General information */
*g = 0;
*b = 0;
- for(i = 0; i < sizeof(ggi_pixel)*8; ++i){
+ for(i = 0; i < sizeof(ggi_pixel)*8; ++i) {
int mask = 1 << i;
- if(LIBGGI_PIXFMT(vis)->red_mask & mask)
+ if (LIBGGI_PIXFMT(vis)->red_mask & mask)
++(*r);
- if(LIBGGI_PIXFMT(vis)->green_mask & mask)
+ if (LIBGGI_PIXFMT(vis)->green_mask & mask)
++(*g);
- if(LIBGGI_PIXFMT(vis)->blue_mask & mask)
+ if (LIBGGI_PIXFMT(vis)->blue_mask & mask)
++(*b);
}
GGIMESADPRINT_CORE("ggiMesaInit() called\n");
- str = getenv("GGIMESA_DEBUG");
+ str = getenv("GGIMESA_DEBUGSYNC");
if (str != NULL) {
- _ggimesaDebugState = atoi(str);
- GGIMESADPRINT_CORE("Debugging=%d\n", _ggimesaDebugState);
+ _ggimesaDebugSync = 1;
}
- str = getenv("GGIMESA_DEBUGSYNC");
+ str = getenv("GGIMESA_DEBUG");
if (str != NULL) {
- _ggimesaDebugSync = 1;
+ _ggimesaDebugState = atoi(str);
+ GGIMESADPRINT_CORE("%s Debugging=%d\n",
+ _ggimesaDebugSync ? "sync" : "async",
+ _ggimesaDebugState);
}
GGIMESADPRINT_CORE("ggiMesaInit()\n");
int ggiMesaExit(void)
{
int rc;
-
+
GGIMESADPRINT_CORE("ggiMesaExit() called\n");
-
+
if (!_ggimesaLibIsUp)
return -1;
-
+
if (_ggimesaLibIsUp > 1)
{
/* Exit only at last call */
rc = ggiExtensionUnregister(ggiMesaID);
ggFreeConfig(_ggimesaConfigHandle);
-
+
_ggimesaLibIsUp = 0;
-
+
return rc;
}
int ggiMesaAttach(ggi_visual_t vis)
{
int rc;
-
+
GGIMESADPRINT_CORE("ggiMesaAttach() called\n");
-
+
rc = ggiExtensionAttach(vis, ggiMesaID);
if (rc == 0)
{
if (ctx->gl_ctx->Viewport.Width == 0)
{
_mesa_Viewport(0, 0,
- LIBGGI_MODE(vis)->visible.x,
- LIBGGI_MODE(vis)->visible.y);
- ctx->gl_ctx->Scissor.Width = LIBGGI_MODE(vis)->visible.x;
- ctx->gl_ctx->Scissor.Height = LIBGGI_MODE(vis)->visible.y;
+ LIBGGI_VIRTX(vis),
+ LIBGGI_VIRTY(vis));
+ ctx->gl_ctx->Scissor.Width = LIBGGI_VIRTX(vis);
+ ctx->gl_ctx->Scissor.Height = LIBGGI_VIRTY(vis);
}
}
_swsetup_InvalidateState(ctx, new_state);
_tnl_InvalidateState(ctx, new_state);
+ /* XXX: Better use an assertion that bails out here on failure */
if (!LIBGGI_MESAEXT(ggi_ctx->ggi_visual)->update_state) {
GGIMESADPRINT_CORE("update_state == NULL!\n");
GGIMESADPRINT_CORE("Please check your config files!\n");
GGIMESADPRINT_CORE("changed() called\n");
- switch (whatchanged)
- {
+ switch (whatchanged) {
case GGI_CHG_APILIST:
{
- char api[256];
- char args[256];
+ char api[GGI_API_MAXLEN];
+ char args[GGI_API_MAXLEN];
int i;
const char *fname;
ggi_dlhandle *lib;