From 89ac4fc6bf745f7e2d9eb264f24b508317acb782 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 10 Sep 2004 22:12:36 +0000 Subject: applied patch #1026109 --- src/mesa/drivers/ggi/display/fbdev_mode.c | 11 +++--- src/mesa/drivers/ggi/display/fbdev_visual.c | 57 +++++++---------------------- 2 files changed, 19 insertions(+), 49 deletions(-) (limited to 'src/mesa/drivers/ggi/display') diff --git a/src/mesa/drivers/ggi/display/fbdev_mode.c b/src/mesa/drivers/ggi/display/fbdev_mode.c index eee80eb4b7..85c35ffe0e 100644 --- a/src/mesa/drivers/ggi/display/fbdev_mode.c +++ b/src/mesa/drivers/ggi/display/fbdev_mode.c @@ -75,15 +75,16 @@ static int do_setmode(ggi_visual *vis) _ggiZapMode(vis, ~GGI_DL_OPDISPLAY); priv->have_accel = 0; - for (id = 1; GGIMesa_fbdev_getapi(vis, id, libname, libargs) == 0; id++) - { + + for (id = 1; GGIMesa_fbdev_getapi(vis, id, libname, libargs) == 0; id++) { if (_ggiOpenDL(vis, libname, libargs, NULL) == 0) { - fprintf(stderr, "display-fbdev-mesa: Error opening the " + GGIMESADPRINT_LIBS(stderr, "display-fbdev-mesa: Error opening the " "%s (%s) library.\n", libname, libargs); return GGI_EFATAL; } - GGIMESADPRINT_CORE("Success in loading %s (%s)\n", libname, libargs); + GGIMESADPRINT_CORE("Success in loading %s (%s)\n", + libname, libargs); } if (priv->oldpriv->accel && @@ -93,7 +94,7 @@ static int do_setmode(ggi_visual *vis) priv->have_accel = 0; } vis->accelactive = 0; - + ggiIndicateChange(vis, GGI_CHG_APILIST); GGIMESADPRINT_CORE("display-fbdev-mesa: do_setmode SUCCESS\n"); diff --git a/src/mesa/drivers/ggi/display/fbdev_visual.c b/src/mesa/drivers/ggi/display/fbdev_visual.c index 79c16ec796..f0c1771c77 100644 --- a/src/mesa/drivers/ggi/display/fbdev_visual.c +++ b/src/mesa/drivers/ggi/display/fbdev_visual.c @@ -38,7 +38,6 @@ #include #include -#define GGI_SYMNAME_PREFIX "MesaGGIdl_" #ifdef HAVE_SYS_VT_H #include @@ -68,65 +67,28 @@ static accel_info accel_strings[] = { #define NUM_ACCELS (sizeof(accel_strings)/sizeof(accel_info)) -/* FIXME: These should really be defined in the make system */ -#define CONF_FILE "/usr/local/etc/ggi/mesa/targets/fbdev.conf" -void *_configHandle; -char confstub[512] = CONF_FILE; -char *conffile = confstub; - -static int changed(ggi_visual_t vis, int whatchanged) -{ - 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); - } - } - break; - } - return 0; -} static int GGIopen(ggi_visual *vis, struct ggi_dlhandle *dlh, const char *args, void *argptr, uint32 *dlret) { - struct fbdev_priv_mesa *priv; int err; + struct fbdev_priv_mesa *priv; ggifunc_getapi *oldgetapi; + + priv->oldpriv = LIBGGI_PRIVATE(vis); /* Hook back */ + GGIMESA_PRIV(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa)); if (priv == NULL) { - fprintf(stderr, "Failed to allocate fbdev private data\n"); + fprintf(stderr, "GGIMesa: Failed to allocate fbdev private data\n"); return GGI_ENOMEM; } - priv->oldpriv = LIBGGI_PRIVATE(vis); /* Hook back */ - - err = ggLoadConfig(conffile, &_configHandle); - if (err != GGI_OK) { - GGIMESADPRINT_CORE("display-fbdev: Couldn't open %s\n", conffile); - return err; - } - - LIBGGI_MESAEXT(vis)->update_state = NULL; - LIBGGI_MESAEXT(vis)->setup_driver = NULL; - oldgetapi = vis->opdisplay->getapi; vis->opdisplay->getapi = GGIMesa_fbdev_getapi; changed(vis, GGI_CHG_APILIST); + /* If the accel sublibs didn't sucessfuly hook a driver, * back up and keep looking */ if ((LIBGGI_MESAEXT(vis)->update_state == NULL) || @@ -142,6 +104,13 @@ static int GGIopen(ggi_visual *vis, struct ggi_dlhandle *dlh, static int GGIclose(ggi_visual *vis, struct ggi_dlhandle *dlh) { + struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis); + + if (priv) { + LIBGGI_PRIVATE(vis) = priv->oldpriv; + free(priv); + } + return 0; } -- cgit v1.2.3