Procházet zdrojové kódy

* Allow the driver initialisation to fail, for instance when $DISPLAY = "".

tags/v0.99.beta14
Sam Hocevar sam před 18 roky
rodič
revize
70cb2ab916
10 změnil soubory, kde provedl 67 přidání a 71 odebrání
  1. +17
    -53
      caca/caca.c
  2. +10
    -10
      caca/caca_internals.h
  3. +3
    -1
      caca/driver_conio.c
  4. +10
    -1
      caca/driver_gl.c
  5. +3
    -1
      caca/driver_ncurses.c
  6. +3
    -1
      caca/driver_network.c
  7. +3
    -1
      caca/driver_slang.c
  8. +3
    -1
      caca/driver_vga.c
  9. +3
    -1
      caca/driver_win32.c
  10. +12
    -1
      caca/driver_x11.c

+ 17
- 53
caca/caca.c Zobrazit soubor

@@ -122,92 +122,56 @@ static int caca_init_driver(caca_t *kk)
if(var && *var)
{
#if defined(USE_WIN32)
if(!strcasecmp(var, "win32"))
win32_init_driver(kk);
else
if(!strcasecmp(var, "win32")) return win32_install(kk);
#endif
#if defined(USE_CONIO)
if(!strcasecmp(var, "conio"))
conio_init_driver(kk);
else
if(!strcasecmp(var, "conio")) return conio_install(kk);
#endif
#if defined(USE_X11)
if(!strcasecmp(var, "x11"))
x11_init_driver(kk);
else
if(!strcasecmp(var, "x11")) return x11_install(kk);
#endif
#if defined(USE_GL)
if(!strcasecmp(var, "gl"))
gl_init_driver(kk);
else
if(!strcasecmp(var, "gl")) return gl_install(kk);
#endif
#if defined(USE_SLANG)
if(!strcasecmp(var, "slang"))
slang_init_driver(kk);
else
if(!strcasecmp(var, "slang")) return slang_install(kk);
#endif
#if defined(USE_NCURSES)
if(!strcasecmp(var, "ncurses"))
ncurses_init_driver(kk);
else
if(!strcasecmp(var, "ncurses")) return ncurses_install(kk);
#endif
#if defined(USE_NETWORK)
if(!strcasecmp(var, "network"))
network_init_driver(kk);
else
if(!strcasecmp(var, "network")) return network_install(kk);
#endif
#if defined(USE_VGA)
if(!strcasecmp(var, "vga"))
vga_init_driver(kk);
else
if(!strcasecmp(var, "vga")) return vga_install(kk);
#endif
return -1;

return 0;
return -1;
}
#endif

#if defined(USE_WIN32)
win32_init_driver(kk);
return 0;
if(win32_install(kk) == 0) return 0;
#endif
#if defined(USE_CONIO)
conio_init_driver(kk);
return 0;
if(conio_install(kk) == 0) return 0;
#endif
#if defined(USE_VGA)
vga_init_driver(kk);
return 0;
if(vga_install(kk) == 0) return 0;
#endif
#if defined(USE_X11)
#if defined(HAVE_GETENV)
if(getenv("DISPLAY") && *(getenv("DISPLAY")))
#endif
{
x11_init_driver(kk);
return 0;
}
if(x11_install(kk) == 0) return 0;
#endif
#if defined(USE_GL)
#if defined(HAVE_GETENV) && defined(GLUT_XLIB_IMPLEMENTATION)
if(getenv("DISPLAY") && *(getenv("DISPLAY")))
#endif
{
gl_init_driver(kk);
return 0;
}
if(gl_install(kk) == 0) return 0;
#endif
#if defined(USE_SLANG)
slang_init_driver(kk);
return 0;
if(slang_install(kk) == 0) return 0;
#endif
#if defined(USE_NCURSES)
ncurses_init_driver(kk);
return 0;
if(ncurses_install(kk) == 0) return 0;
#endif
#if defined(USE_NETWORK)
network_init_driver(kk);
return 0;
if(network_install(kk) == 0) return 0;
#endif

return -1;


+ 10
- 10
caca/caca_internals.h Zobrazit soubor

@@ -38,6 +38,7 @@ typedef long unsigned int uintptr_t;
/* Graphics driver */
enum caca_driver
{
CACA_DRIVER_NONE = 0,
#if defined(USE_CONIO)
CACA_DRIVER_CONIO = 1,
#endif
@@ -62,34 +63,34 @@ enum caca_driver
#if defined(USE_VGA)
CACA_DRIVER_VGA = 8,
#endif
CACA_DRIVER_NONE = 0
};

/* Available drivers */
#if defined(USE_CONIO)
void conio_init_driver(caca_t *);
int conio_install(caca_t *);
#endif
#if defined(USE_GL)
void gl_init_driver(caca_t *);
int gl_install(caca_t *);
#endif
#if defined(USE_NCURSES)
void ncurses_init_driver(caca_t *);
int ncurses_install(caca_t *);
#endif
#if defined(USE_SLANG)
void slang_init_driver(caca_t *);
int slang_install(caca_t *);
#endif
#if defined(USE_WIN32)
void win32_init_driver(caca_t *);
int win32_install(caca_t *);
#endif
#if defined(USE_X11)
void x11_init_driver(caca_t *);
int x11_install(caca_t *);
#endif
#if defined(USE_NETWORK)
void network_init_driver(caca_t *);
int network_install(caca_t *);
#endif
#if defined(USE_VGA)
void vga_init_driver(caca_t *);
int vga_install(caca_t *);
#endif

/* Timer structure */
struct caca_timer
{
@@ -128,7 +129,6 @@ struct caca_context
struct resize
{
int resized; /* A resize event was requested */
//int acked; /* The event has been acknowledged by the user */
unsigned w, h; /* Requested width and height */
} resize;



+ 3
- 1
caca/driver_conio.c Zobrazit soubor

@@ -151,7 +151,7 @@ static int conio_get_event(caca_t *kk, struct caca_event *ev)
* Driver initialisation
*/

void conio_init_driver(caca_t *kk)
int conio_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_CONIO;

@@ -163,6 +163,8 @@ void conio_init_driver(caca_t *kk)
kk->drv.display = conio_display;
kk->drv.handle_resize = conio_handle_resize;
kk->drv.get_event = conio_get_event;

return 0;
}

#endif /* USE_CONIO */


+ 10
- 1
caca/driver_gl.c Zobrazit soubor

@@ -106,9 +106,11 @@ static int gl_init_graphics(caca_t *kk)

gl_kk = kk;

#if defined(HAVE_GETENV)
geometry = getenv("CACA_GEOMETRY");
if(geometry && *geometry)
sscanf(geometry, "%ux%u", &width, &height);
#endif

if(width && height)
_cucul_set_size(kk->qq, width, height);
@@ -445,8 +447,13 @@ static void gl_handle_mouse_motion(int x, int y)
* Driver initialisation
*/

void gl_init_driver(caca_t *kk)
int gl_install(caca_t *kk)
{
#if defined(HAVE_GETENV) && defined(GLUT_XLIB_IMPLEMENTATION)
if(!getenv("DISPLAY") || !*(getenv("DISPLAY")))
return -1;
#endif

kk->drv.driver = CACA_DRIVER_GL;

kk->drv.init_graphics = gl_init_graphics;
@@ -457,6 +464,8 @@ void gl_init_driver(caca_t *kk)
kk->drv.display = gl_display;
kk->drv.handle_resize = gl_handle_resize;
kk->drv.get_event = gl_get_event;

return 0;
}

#endif /* USE_GL */


+ 3
- 1
caca/driver_ncurses.c Zobrazit soubor

@@ -530,7 +530,7 @@ static void ncurses_write_utf32(uint32_t c)
* Driver initialisation
*/

void ncurses_init_driver(caca_t *kk)
int ncurses_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_NCURSES;

@@ -542,6 +542,8 @@ void ncurses_init_driver(caca_t *kk)
kk->drv.display = ncurses_display;
kk->drv.handle_resize = ncurses_handle_resize;
kk->drv.get_event = ncurses_get_event;

return 0;
}

#endif /* USE_NCURSES */


+ 3
- 1
caca/driver_network.c Zobrazit soubor

@@ -550,7 +550,7 @@ ssize_t nonblock_write(int fd, void *buf, size_t len)
* Driver initialisation
*/

void network_init_driver(caca_t *kk)
int network_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_NETWORK;

@@ -562,6 +562,8 @@ void network_init_driver(caca_t *kk)
kk->drv.display = network_display;
kk->drv.handle_resize = network_handle_resize;
kk->drv.get_event = network_get_event;

return 0;
}




+ 3
- 1
caca/driver_slang.c Zobrazit soubor

@@ -468,7 +468,7 @@ static void slang_check_terminal(void)
* Driver initialisation
*/

void slang_init_driver(caca_t *kk)
int slang_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_SLANG;

@@ -480,6 +480,8 @@ void slang_init_driver(caca_t *kk)
kk->drv.display = slang_display;
kk->drv.handle_resize = slang_handle_resize;
kk->drv.get_event = slang_get_event;

return 0;
}

#endif /* USE_SLANG */


+ 3
- 1
caca/driver_vga.c Zobrazit soubor

@@ -145,7 +145,7 @@ static int vga_get_event(caca_t *kk, struct caca_event *ev)
* Driver initialisation
*/

void vga_init_driver(caca_t *kk)
int vga_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_VGA;

@@ -157,6 +157,8 @@ void vga_init_driver(caca_t *kk)
kk->drv.display = vga_display;
kk->drv.handle_resize = vga_handle_resize;
kk->drv.get_event = vga_get_event;

return 0;
}

#endif /* USE_VGA */


+ 3
- 1
caca/driver_win32.c Zobrazit soubor

@@ -333,7 +333,7 @@ static int win32_get_event(caca_t *kk, struct caca_event *ev)
* Driver initialisation
*/

void win32_init_driver(caca_t *kk)
int win32_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_WIN32;

@@ -345,6 +345,8 @@ void win32_init_driver(caca_t *kk)
kk->drv.display = win32_display;
kk->drv.handle_resize = win32_handle_resize;
kk->drv.get_event = win32_get_event;

return 0;
}

#endif /* USE_WIN32 */


+ 12
- 1
caca/driver_x11.c Zobrazit soubor

@@ -92,9 +92,11 @@ static int x11_init_graphics(caca_t *kk)

kk->drv.p = malloc(sizeof(struct driver_private));

#if defined(HAVE_GETENV)
geometry = getenv("CACA_GEOMETRY");
if(geometry && *geometry)
sscanf(geometry, "%ux%u", &width, &height);
#endif

if(width && height)
_cucul_set_size(kk->qq, width, height);
@@ -103,10 +105,12 @@ static int x11_init_graphics(caca_t *kk)
if(kk->drv.p->dpy == NULL)
return -1;

#if defined(HAVE_GETENV)
fonts[0] = getenv("CACA_FONT");
if(fonts[0] && *fonts[0])
parser = fonts;
else
#endif
parser = fonts + 1;

/* Ignore font errors */
@@ -543,8 +547,13 @@ static int x11_error_handler(Display *dpy, XErrorEvent *xevent)
* Driver initialisation
*/

void x11_init_driver(caca_t *kk)
int x11_install(caca_t *kk)
{
#if defined(HAVE_GETENV)
if(!getenv("DISPLAY") || !*(getenv("DISPLAY")))
return -1;
#endif

kk->drv.driver = CACA_DRIVER_X11;

kk->drv.init_graphics = x11_init_graphics;
@@ -555,6 +564,8 @@ void x11_init_driver(caca_t *kk)
kk->drv.display = x11_display;
kk->drv.handle_resize = x11_handle_resize;
kk->drv.get_event = x11_get_event;

return 0;
}

#endif /* USE_X11 */


Načítá se…
Zrušit
Uložit