static void testcase2(const char *desc) { int err; ggi_visual_t vis; ggi_mode mode; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); err = ggiCheckSimpleMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO, &mode); err = ggiSetMode(vis, &mode); if (err != GGI_OK) { printfailure("ggiSetMode: expected return value: GGI_OK\n" "actual return value: %i\n", err); return; } ggiClose(vis); ggiExit(); printsuccess(); return; }
/* Main function. Check parameters. Set up mode. Run tests. */ int main(int argc,const char *argv[]) { int testnum; if (parse_args(argc,argv)) return 1; if (ggiInit() != 0) { fprintf(stderr, "%s: unable to initialize LibGGI, exiting.\n", argv[0]); exit(1); } if (setup_mode()) { if (visual) ggDelStem(visual); ggiExit(); return 2; } for (testnum=0;tests[testnum].name;testnum++) { if (!tests[testnum].active) continue; tests[testnum].func(); } ggDelStem(visual); ggiExit(); return 0; }
int gr_init(int mode) { int retcode; // Only do this function once! if (gr_installed==1) return -1; MALLOC(grd_curscreen,grs_screen, 1); memset(grd_curscreen, 0, sizeof(grs_screen)); ggiInit(); screenvis = ggiOpen(NULL); if ((retcode=gr_set_mode(mode))) return retcode; grd_curscreen->sc_canvas.cv_color = 0; grd_curscreen->sc_canvas.cv_drawmode = 0; grd_curscreen->sc_canvas.cv_font = NULL; grd_curscreen->sc_canvas.cv_font_fg_color = 0; grd_curscreen->sc_canvas.cv_font_bg_color = 0; gr_set_current_canvas( &grd_curscreen->sc_canvas ); gr_installed = 1; atexit(gr_close); return 0; }
static void testcase7(const char *desc) { int err; ggi_visual_t vis; ggi_mode mode; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); /* sync mode enables mansync if used */ /* Get the default mode */ err = ggiCheckGraphMode (vis, 640, 480, GGI_AUTO, GGI_AUTO, GT_AUTO, &mode); if (err != GGI_OK) { printfailure("ggiCheckGraphMode: #1: No 640x480 mode available\n"); ggiClose(vis); ggiExit(); return; } err = ggiSetMode(vis, &mode); if (err != GGI_OK) { printfailure("ggiSetMode() #1: failed although ggiCheckGraphMode() was OK!\n"); ggiClose(vis); ggiExit(); return; } err = ggiCheckGraphMode(vis, 320, 200, GGI_AUTO, GGI_AUTO, GT_AUTO, &mode); if (err != GGI_OK) { printfailure("ggiCheckGraphMode: #2: No 320x200 mode available\n"); ggiClose(vis); ggiExit(); return; } err = ggiSetMode(vis, &mode); if (err != GGI_OK) { printfailure("ggiSetMode() #2: resetting a mode failed although ggiCheckGraphMode() was OK!\n"); ggiClose(vis); ggiExit(); return; } ggiClose(vis); ggiExit(); printsuccess(); return; }
static void testcase5(const char *desc) { int err; ggi_visual_t vis; ggi_mode sug_mode, final_mode; int visible_w, visible_h; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); ggiSetFlags(vis, GGIFLAG_ASYNC); /* Get the default mode */ err = ggiCheckGraphMode (vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO, &sug_mode); if (err != GGI_OK) { printfailure("ggiCheckGraphMode: No graphic mode available\n"); ggiClose(vis); ggiExit(); return; } visible_w = sug_mode.visible.x; visible_h = sug_mode.visible.y; err = ggiCheckGraphMode(vis, visible_w, visible_h, visible_w, visible_h*2, GT_AUTO, &final_mode); if (!err) { /* actually print an info output */ printassert(0 == 1, "Info: Applications may assume now," " panning via ggiSetOrigin() is available\n"); /* Note, Applications have no other way to figure out if * ggiSetOrigin() is available or not */ } else { final_mode = sug_mode; } err = ggiSetMode(vis, &final_mode); if (err) { printfailure("ggiSetMode() failed although ggiCheckGraphMode() was OK!\n"); ggiClose(vis); ggiExit(); } ggiClose(vis); ggiExit(); printsuccess(); return; }
static int test2_init(struct gg_api *api) { ggiInit(); observer = ggObserve(libggi->channel, observe_visuals, NULL); return GGI_OK; }
static void testcase1(const char *desc) { ggi_visual_t vis; ggi_color green, back; int err; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); err = ggiSetGraphMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_8BIT); if(err < 0) { printassert(0, "Palettized mode not available.\n"); printsuccess(); ggiClose(vis); ggiExit(); return; } green.r = 100; green.g = 40000; green.b = 4000; err = ggiSetPalette(vis, GGI_PALETTE_DONTCARE, 1, &green); if (err < 0) { printfailure("Unable to install colormap with one entry.\n"); ggiClose(vis); ggiExit(); return; } printassert(err == (int)ggiMapColor(vis, &green), "ggiMapColor inconsistent with retval of ggiSetPalette.\n"); ggiUnmapPixel(vis, err, &back); if(green.r != back.r || green.g != back.g || green.b != back.b) { printfailure("Unexpected color from ggiUnmapPixel.\n"); ggiClose(vis); ggiExit(); return; } ggiSetGCForeground(vis, err); ggiDrawBox(vis, 0, 0, 3000, 3000); ggiFlush(vis); /* You should see a green square, how to test this? */ ggUSleep(5000000); printsuccess(); ggiClose(vis); ggiExit(); }
static int GGI_Available(void) { ggi_visual_t *vis; vis = NULL; if (ggiInit() == 0) { vis = ggiOpen(NULL); if (vis != NULL) { ggiClose(vis); } } return (vis != NULL); }
int main(int argc, char * const argv[]) { int rc; parseopts(argc, argv); printdesc("Regression testsuite for display-x(7).\n\n"); rc = ggiInit(); if (rc < 0) ggPanic("Couldn't initialize libggi"); testcase1("See, if mansync actually runs in SYNC mode - sets up the mode the same way as XGGI does"); printsummary(); return 0; }
static int preinit(const char *arg) { if (ggiInit() != 0) { mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize GGI\n"); return (-1); } #ifdef HAVE_GGIWMH if (ggiWmhInit() < 0) { mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize libggiwmh\n"); return (-1); } #endif if (arg) { int i = 0; ggi_conf.driver = strdup(arg); while (ggi_conf.driver[i] != '\0') { if (ggi_conf.driver[i] == '.') ggi_conf.driver[i] = ','; i++; } } else { ggi_conf.driver = NULL; } ggi_conf.vis = ggiOpen(ggi_conf.driver); if (ggi_conf.vis == NULL) { mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to open '%s' output\n", (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver); ggiExit(); return (-1); } ggi_conf.drawvis = ggi_conf.vis; #ifdef HAVE_GGIWMH ggiWmhAttach(ggi_conf.vis); #endif mp_msg(MSGT_VO, MSGL_V, "[ggi] using '%s' output\n", (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver); return 0; }
static void testcase8(const char *desc) { int err; ggi_visual_t vis; ggi_mode mode; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); mode.virt.x = mode.virt.y = GGI_AUTO; mode.visible.x = mode.visible.y = GGI_AUTO; mode.frames = GGI_AUTO; mode.graphtype = GT_AUTO; mode.dpp.x = mode.dpp.y = 1; mode.size.x = -19493; mode.size.y = 31831; /* Get the default mode */ ggiCheckMode(vis, &mode); err = ggiSetMode(vis, &mode); if (err != GGI_OK) { printfailure("ggiSetMode() failed even though ggiCheckMode() was called!\n"); ggiClose(vis); ggiExit(); return; } ggiClose(vis); ggiExit(); printsuccess(); return; }
int main(int argc, const char *argv[]) { ggi_visual_t vis; ggi_mode mode; int i, j, cx, cy, c; char buf[80]; /* Set up the random number generator */ srandom((unsigned)time(NULL)); /* Initialize LibGGI */ if (giiInit() < 0) { fprintf(stderr, "Cannot initialize LibGII!\n"); return 1; } if (ggiInit() < 0) { fprintf(stderr, "Cannot initialize LibGGI!\n"); giiExit(); return 1; } vis = ggNewStem(NULL); if (!vis) { fprintf(stderr, "Cannot open create stem!\n"); ggiExit(); giiExit(); return 1; } if (giiAttach(vis) < 0) { fprintf(stderr, "Cannot attach LibGII!\n"); ggDelStem(vis); ggiExit(); giiExit(); return 1; } if (ggiAttach(vis) < 0) { fprintf(stderr, "Cannot attach LibGGI!\n"); ggDelStem(vis); ggiExit(); giiExit(); return 1; } /* Open default visual */ if (ggiOpen(vis, NULL) < 0) { fprintf(stderr, "Cannot open default visual!\n"); ggDelStem(vis); ggiExit(); giiExit(); return 1; } /* Set visual to async mode (drawing not immediate) */ ggiSetFlags(vis, GGIFLAG_ASYNC); /* Set default mode, but with multiple buffering */ if (argc > 1) { ggiParseMode(argv[1], &mode); } else { ggiParseMode("", &mode); if (mode.frames < 2) mode.frames = 2; } if (ggiSetMode(vis, &mode)) { fprintf(stderr, "Cannot set mode!\n"); ggDelStem(vis); ggiExit(); giiExit(); return 1; } ggiGetCharSize(vis, &cx, &cy); /* Setup palette */ if (GT_SCHEME(mode.graphtype) == GT_PALETTE) { ggiSetColorfulPalette(vis); } /* Write something into each frame */ for (i = 0; i < mode.frames; i++) { if (ggiSetWriteFrame(vis, i)) { fprintf(stderr, "Cannot set write frame!\n"); ggDelStem(vis); ggiExit(); giiExit(); return 1; } ggiSetGCBackground(vis, ggiMapColor(vis, &white)); ggiSetGCForeground(vis, ggiMapColor(vis, &white)); ggiFillscreen(vis); } /* Clip a small border so that clipping can be verified. */ ggiSetGCClipping(vis, 5, 5, mode.virt.x - 5, mode.virt.y - 5); /* Write something into each frame */ for (i = 0; i < mode.frames; i++) { ggiSetWriteFrame(vis, i); ggiSetGCBackground(vis, ggiMapColor(vis, &black)); ggiSetGCForeground(vis, ggiMapColor(vis, &black)); ggiFillscreen(vis); snprintf(buf, sizeof(buf), "Hello World #%d!", i); for (j = 0; j < mode.virt.y; j += cy) { ggi_color col; int x = random() % mode.virt.x; int h = (random() & 0x7fff) + 0x8000; int l = (random() & 0x7fff); /* Use different colors for different frames */ col.r = ((i + 1) & 1) ? h : l; col.g = ((i + 1) & 2) ? h : l; col.b = ((i + 1) & 4) ? h : l; ggiSetGCForeground(vis, ggiMapColor(vis, &col)); ggiPuts(vis, x, j, buf); } /* Flush commands before proceeding to the next frame */ ggiFlush(vis); } /* Cycle through frames */ i = 0; j = 0; do { if (ggiSetDisplayFrame(vis, i)) { ggPanic("Cannot set display frame!\n"); } /* Wait */ c = GIIK_VOID; do { struct timeval tv = { 0, 0 }; int key; /* Flush command before waiting for input */ ggiFlush(vis); key = giiEventPoll(vis, emKeyPress, &tv); if (key & emKeyPress) c = giiGetc(vis); ggUSleep(50000); animate(vis, &mode, j); j++; } while (c == GIIK_VOID || GII_KTYP(c) == GII_KT_MOD); i = (i + 1) % mode.frames; } while (c != 'q' && c != 'Q' && c != 'x' && c != 'X' && c != GIIUC_Escape); ggiClose(vis); ggDelStem(vis); ggiExit(); giiExit(); return 0; }
void Init() { GLfloat h=(GLfloat)3/4; GLfloat pos[4]={5,5,-20,0}; GLfloat specular[4]={.4,.4,.4,1}; GLfloat diffuse[4]={.3,.3,.3,1}; GLfloat ambient[4]={.2,.2,.2,1}; int err; if (ggiInit()<0) { printf("ggiInit() failed\n"); exit(1); } ctx=GGIMesaCreateContext(); if (ctx==NULL) { printf("Can't create Context!\n"); exit(1); } vis=ggiOpen(NULL); vis_mem=ggiOpen("display-memory",NULL); if (vis==NULL || vis_mem==NULL) { printf("Can't open ggi_visuals!\n"); exit(1); } err=ggiSetGraphMode(vis,screen_x,screen_y,screen_x,screen_y,bpp); err+=ggiSetGraphMode(vis_mem,screen_x,screen_y,screen_x,screen_y,bpp); if (err) { printf("Can't set %ix%i\n",screen_x,screen_y); exit(1); } if (GGIMesaSetVisual(ctx,vis_mem,GL_TRUE,GL_FALSE)<0) { printf("GGIMesaSetVisual() failed!\n"); exit(1); } GGIMesaMakeCurrent(ctx); glViewport(0,0,screen_x,screen_y); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1,1,-h,h,1,50); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-9); glShadeModel(GL_FLAT); glFrontFace(GL_CW); glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0,GL_POSITION,pos); glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse); glLightfv(GL_LIGHT0,GL_AMBIENT,ambient); glLightfv(GL_LIGHT0,GL_SPECULAR,specular); #ifdef ZBUFFER glEnable(GL_DEPTH_TEST); #endif }
int GGI_VideoInit(_THIS, SDL_PixelFormat *vformat) { ggi_mode mode = { 1, { GGI_AUTO, GGI_AUTO }, { GGI_AUTO, GGI_AUTO }, { 0, 0 }, GT_AUTO, { GGI_AUTO, GGI_AUTO } }; struct private_hwdata *priv; ggi_color pal[256], map[256]; const ggi_directbuffer *db; int err, num_bufs; ggi_pixel white, black; priv = SDL_malloc(sizeof(struct private_hwdata)); if (priv == NULL) { SDL_SetError("Unhandled GGI mode type!\n"); GGI_VideoQuit(NULL); } if (ggiInit() != 0) { SDL_SetError("Unable to initialize GGI!\n"); GGI_VideoQuit(NULL); } VIS = ggiOpen(NULL); if (VIS == NULL) { SDL_SetError("Unable to open default GGI visual!\n"); ggiExit(); GGI_VideoQuit(NULL); } ggiSetFlags(VIS, GGIFLAG_ASYNC); /* Validate mode, autodetecting any GGI_AUTO or GT_AUTO fields */ ggiCheckMode(VIS, &mode); /* At this point we should have a valid mode - try to set it */ err = ggiSetMode(VIS, &mode); /* If we couldn't set _any_ modes, something is very wrong */ if (err) { SDL_SetError("Can't set a mode!\n"); ggiClose(VIS); ggiExit(); GGI_VideoQuit(NULL); } /* Determine the current screen size */ this->info.current_w = mode.virt.x; this->info.current_h = mode.virt.y; /* Set a palette for palletized modes */ if (GT_SCHEME(mode.graphtype) == GT_PALETTE) { ggiSetColorfulPalette(VIS); ggiGetPalette(VIS, 0, 1 << vformat->BitsPerPixel, pal); } /* Now we try to get the DirectBuffer info, which determines whether * SDL can access hardware surfaces directly. */ num_bufs = ggiDBGetNumBuffers(VIS); if (num_bufs > 0) { db = ggiDBGetBuffer(VIS, 0); /* Only handle one DB for now */ vformat->BitsPerPixel = db->buffer.plb.pixelformat->depth; vformat->Rmask = db->buffer.plb.pixelformat->red_mask; vformat->Gmask = db->buffer.plb.pixelformat->green_mask; vformat->Bmask = db->buffer.plb.pixelformat->blue_mask; /* Fill in our hardware acceleration capabilities */ this->info.wm_available = 0; this->info.hw_available = 1; this->info.video_mem = db->buffer.plb.stride * mode.virt.y; } video_mode.x = 0; video_mode.y = 0; video_mode.w = mode.virt.x; video_mode.h = mode.virt.y; SDL_modelist[((vformat->BitsPerPixel + 7) / 8) - 1] = &video_mode; /* We're done! */ return(0); }
int main(int argc, char *argv[]) { int i; long binit, a_binit; long prev, curr; long aprev, acurr; fill_info(); binit = get_size(); a_binit = _get_ggi_alloced(); if (ggiInit() != 0) err("first ggiInit() failed!\n"); prev = get_size(); aprev = _get_ggi_alloced(); for (i=2; i <= 80; i++) { putchar('.'); fflush(stdout); ggiExit(); if (ggiInit() != 0) err("ggiInit() number %d failed\n", i); } curr = get_size(); acurr = _get_ggi_alloced(); inform_mem("\nggiInit()\n", prev, curr, aprev, acurr); if ((vis = ggiOpen(NULL)) == NULL) err("first ggiOpen() failed!\n"); prev = get_size(); aprev = _get_ggi_alloced(); for (i=2; i < 20; i++) { putchar('.'); fflush(stdout); ggiClose(vis); if ((vis = ggiOpen(NULL)) == NULL) err("ggiOpen() number %d failed\n", i); } curr = get_size(); acurr = _get_ggi_alloced(); inform_mem("\nggiOpen()\n", prev, curr, aprev, acurr); prev = get_size(); aprev = _get_ggi_alloced(); for (i=2; i < 20; i++) { putchar('.'); fflush(stdout); ggiCheckSimpleMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO, NULL); } curr = get_size(); acurr = _get_ggi_alloced(); inform_mem("\nggiCheckSimpleMode()\n", prev, curr, aprev, acurr); ggiSetFlags(vis, GGIFLAG_ASYNC); if (ggiSetSimpleMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO) != 0) { err("Unable to set default mode!\n"); } prev = get_size(); aprev = _get_ggi_alloced(); for (i=2; i < 20; i++) { putchar('.'); fflush(stdout); if (ggiSetSimpleMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO) != 0) { err("Unable to set default mode %d!\n", i); } } curr = get_size(); acurr = _get_ggi_alloced(); inform_mem("\nggiSetSimpleMode()\n", prev, curr, aprev, acurr); ggiExit(); curr = get_size(); acurr = _get_ggi_alloced(); inform_mem("\nggiExit()\n", binit, curr, a_binit, acurr); return 0; }
int main(int argc, char *argv[]) { struct timeval cur_time; struct timeval flush_time; /* initialize */ if (handle_args(argc, argv) < 0) { return 1; } /* open visual */ if (ggiInit() < 0) { fprintf(stderr, "teleserver: Error initializing GGI.\n"); return 1; } if (tserver_init(&serv, display_num) < 0) { ggiExit(); return 3; } ggCurTime(&flush_time); printf("TeleServer Ready.\n"); fflush(stdout); /* main loop */ for (quit=0; !quit; ) { struct timeval tv; int millies; busy=0; /* check for incoming connections */ if (tserver_check(&serv)) { handle_connection(); busy++; } /* check for user input */ tv.tv_sec = tv.tv_usec = 0; if (mode_up && (ggiEventPoll(vis, emAll, &tv) != 0)) { handle_event(); busy++; } /* check for client commands */ if (user) { check_command(user); } if (! busy) { ggUSleep(TSERVER_SLEEP_TIME * 1000); } ggCurTime(&cur_time); millies = (cur_time.tv_sec - flush_time.tv_sec) * 1000 + (cur_time.tv_usec - flush_time.tv_usec) / 1000; if (millies >= TSERVER_FLUSH_TIME) { if (mode_up) { ggiFlush(vis); } flush_time = cur_time; } } /* shut down */ tserver_exit(&serv); ggiExit(); return 0; }
static void testcase1(const char *desc) { int err; ggi_visual_t vis; ggi_mode mode; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); err = ggiCheckSimpleMode(vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO, &mode); if (err == GGI_OK) { if (mode.visible.x == GGI_AUTO) { printfailure("visible.x: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.visible.y == GGI_AUTO) { printfailure("visible.y: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.virt.x == GGI_AUTO) { printfailure("virt.x: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.virt.y == GGI_AUTO) { printfailure("virt.y: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.size.x == GGI_AUTO) { printfailure("size.x: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.size.y == GGI_AUTO) { printfailure("size.y: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.frames == GGI_AUTO) { printfailure("frames: expected return value: != GGI_AUTO\n" "actual return value: GGI_AUTO\n"); return; } if (mode.graphtype == GT_AUTO) { printfailure("graphtype: expected return value: != GT_AUTO\n" "actual return value: GT_AUTO\n"); return; } } ggiClose(vis); ggiExit(); printsuccess(); return; }
static void testcase4(const char *desc) { int err; ggi_visual_t vis; ggi_mode mode; ggi_coord size; printteststart(__FILE__, __PRETTY_FUNCTION__, EXPECTED2PASS, desc); if (dontrun) return; err = ggiInit(); printassert(err == GGI_OK, "ggiInit failed with %i\n", err); vis = ggiOpen(NULL); printassert(vis != NULL, "ggiOpen() failed\n"); err = ggiCheckSimpleMode( vis, GGI_AUTO, GGI_AUTO, GGI_AUTO, GT_AUTO, &mode); printassert(err == GGI_OK, "ggiCheckSimpleMode: can't find a mode\n"); if(err != GGI_OK) { ggiClose(vis); ggiExit(); printsuccess(); return; } printassert(mode.size.x != GGI_AUTO && mode.size.y != GGI_AUTO, "physical size is apparently not supported\n"); if(mode.size.x == GGI_AUTO || mode.size.y == GGI_AUTO) { ggiClose(vis); ggiExit(); printsuccess(); return; } /* Clear out all but the physical size */ mode.frames = GGI_AUTO; mode.visible.x = GGI_AUTO; mode.visible.y = GGI_AUTO; mode.virt.x = GGI_AUTO; mode.virt.y = GGI_AUTO; mode.graphtype = GT_AUTO; mode.dpp.x = GGI_AUTO; mode.dpp.y = GGI_AUTO; size = mode.size; /* This mode should be there */ err = ggiCheckMode(vis, &mode); ggiClose(vis); ggiExit(); if (err != GGI_OK) { printfailure("ggiCheckMode: expected return value: GGI_OK\n" "actual return value: %i\n", err); return; } if (mode.size.x != size.x) { printfailure( "ggiCheckMode: size.x: expected return value: %i\n" "actual return value: %i\n", size.x, mode.size.x); return; } if (mode.size.y != size.y) { printfailure( "ggiCheckMode: size.y: expected return value: %i\n" "actual return value: %i\n", size.y, mode.size.y); return; } printsuccess(); }