Skip to content

Commit 8f4ff82

Browse files
committed
gfxlib2: add driver->update() member
- adds a new member to GFXDRIVER to allow (in future) updating of the video memory from fbgfx's graphics buffer explicitly with the intention of overriding the automatic / background updating of video memory. - a fairly safe internal change since only the GFXDRIVER is extended and should remain binary compatible when linking - usage of the new member will be made in a later future update and will require new flags passed to SCREEN/SCREENRES to modify behaviour and access during run-time
1 parent 090a854 commit 8f4ff82

16 files changed

+38
-16
lines changed

src/gfxlib2/dos/gfx_driver_bios.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ const GFXDRIVER fb_gfxDriverBIOS =
3030
NULL, /* int (*set_window_pos)(int x, int y); */
3131
driver_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
3232
NULL, /* void (*flip)(void); */
33-
NULL /* void (*poll_events)(void); */
33+
NULL, /* void (*poll_events)(void); */
34+
NULL /* void (*update)(void); */
3435
};
3536

3637
static const int res_bpp1[] = {

src/gfxlib2/dos/gfx_driver_modex.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ const GFXDRIVER fb_gfxDriverModeX =
3131
NULL, /* int (*set_window_pos)(int x, int y); */
3232
driver_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
3333
NULL, /* void (*flip)(void); */
34-
NULL /* void (*poll_events)(void); */
34+
NULL, /* void (*poll_events)(void); */
35+
NULL /* void (*update)(void); */
3536
};
3637

3738
static int modes[] = {

src/gfxlib2/dos/gfx_driver_vesa_bnk.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ const GFXDRIVER fb_gfxDriverVESA =
2828
NULL, /* int (*set_window_pos)(int x, int y); */
2929
fb_dos_vesa_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
3030
NULL, /* void (*flip)(void); */
31-
NULL /* void (*poll_events)(void); */
31+
NULL, /* void (*poll_events)(void); */
32+
NULL /* void (*update)(void); */
3233
};
3334

3435
static int data_locked = FALSE;

src/gfxlib2/dos/gfx_driver_vesa_lin.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ const GFXDRIVER fb_gfxDriverVESAlinear =
2727
NULL, /* int (*set_window_pos)(int x, int y); */
2828
fb_dos_vesa_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
2929
NULL, /* void (*flip)(void); */
30-
NULL /* void (*poll_events)(void); */
30+
NULL, /* void (*poll_events)(void); */
31+
NULL /* void (*update)(void); */
3132
};
3233

3334
static __dpmi_meminfo mapping = {0};

src/gfxlib2/dos/gfx_driver_vga.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ const GFXDRIVER fb_gfxDriverVGA =
2626
NULL, /* int (*set_window_pos)(int x, int y); */
2727
driver_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
2828
NULL, /* void (*flip)(void); */
29-
NULL /* void (*poll_events)(void); */
29+
NULL, /* void (*poll_events)(void); */
30+
NULL /* void (*update)(void); */
3031
};
3132

3233
static int modes[] = {

src/gfxlib2/fb_gfx.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,12 @@ typedef struct GFXDRIVER
347347
* It is only needed for OpenGL drivers and can be NULL otherwise.
348348
*/
349349
void (*poll_events)(void);
350+
351+
/** Driver page update function pointer.
352+
*
353+
* Manually refresh the screen by copying from gfxlib2 memory to video memory
354+
*/
355+
void (*update)(void);
350356
} GFXDRIVER;
351357

352358
typedef struct PALETTE

src/gfxlib2/gfx_driver_null.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ const GFXDRIVER __fb_gfxDriverNull =
2020
NULL, /* int (*set_window_pos)(int x, int y); */
2121
NULL, /* int *(*fetch_modes)(int depth, int *size); */
2222
NULL, /* void (*flip)(void); */
23-
NULL /* void (*poll_events)(void); */
23+
NULL, /* void (*poll_events)(void); */
24+
NULL /* void (*update)(void); */
2425
};
2526

2627
static void driver_dummy(void)

src/gfxlib2/js/gfx_driver.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,8 @@ static const GFXDRIVER fb_gfxDriverJS =
275275
NULL, /* int (*set_window_pos)(int x, int y); */
276276
driver_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
277277
NULL, /* void (*flip)(void); */
278-
driver_poll_events /* void (*poll_events)(void); */
278+
driver_poll_events, /* void (*poll_events)(void); */
279+
NULL /* void (*update)(void); */
279280
};
280281

281282
/* GFXDRIVER */
@@ -294,7 +295,8 @@ static const GFXDRIVER fb_gfxWebGL =
294295
NULL, /* int (*set_window_pos)(int x, int y); */
295296
driver_fetch_modes, /* int *(*fetch_modes)(int depth, int *size); */
296297
WGL_Flip, /* void (*flip)(void); */
297-
driver_poll_events /* void (*poll_events)(void); */
298+
driver_poll_events, /* void (*poll_events)(void); */
299+
NULL /* void (*update)(void); */
298300
};
299301

300302
const GFXDRIVER *__fb_gfx_drivers_list[] = {

src/gfxlib2/linux/gfx_driver_fbdev.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ const GFXDRIVER fb_gfxDriverFBDev =
5858
NULL, /* int (*set_window_pos)(int x, int y); */
5959
driver_fetch_modes, /* int *(*fetch_modes)(void); */
6060
NULL, /* void (*flip)(void); */
61-
NULL /* void (*poll_events)(void); */
61+
NULL, /* void (*poll_events)(void); */
62+
NULL /* void (*update)(void); */
6263
};
6364

6465

src/gfxlib2/unix/gfx_driver_opengl_x11.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ const GFXDRIVER fb_gfxDriverOpenGL =
3636
fb_hX11SetWindowPos, /* int (*set_window_pos)(int x, int y); */
3737
fb_hX11FetchModes, /* int *(*fetch_modes)(void); */
3838
driver_flip, /* void (*flip)(void); */
39-
NULL /* void (*poll_events)(void); */
39+
NULL, /* void (*poll_events)(void); */
40+
NULL /* void (*update)(void); */
4041
};
4142

4243

0 commit comments

Comments
 (0)