X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=r_modules.c;h=818637e8467d67100f0e75e6291d403403a40c8e;hb=6d472eb4b897879d92a89416a5785a3fc78da3e7;hp=8021ade76fb46312c98e327eda819731a6ca02d7;hpb=c1ab987e992c1c56ed9ea09426408f7b62ae5100;p=xonotic%2Fdarkplaces.git diff --git a/r_modules.c b/r_modules.c index 8021ade7..818637e8 100644 --- a/r_modules.c +++ b/r_modules.c @@ -6,10 +6,12 @@ typedef struct rendermodule_s { int active; // set by start, cleared by shutdown - char *name; + const char *name; void(*start)(void); void(*shutdown)(void); void(*newmap)(void); + void(*devicelost)(void); + void(*devicerestored)(void); } rendermodule_t; @@ -20,7 +22,7 @@ void R_Modules_Init(void) Cmd_AddCommand("r_restart", R_Modules_Restart, "restarts renderer"); } -void R_RegisterModule(char *name, void(*start)(void), void(*shutdown)(void), void(*newmap)(void)) +void R_RegisterModule(const char *name, void(*start)(void), void(*shutdown)(void), void(*newmap)(void), void(*devicelost)(void), void(*devicerestored)(void)) { int i; for (i = 0;i < MAXRENDERMODULES;i++) @@ -40,6 +42,8 @@ void R_RegisterModule(char *name, void(*start)(void), void(*shutdown)(void), voi rendermodule[i].start = start; rendermodule[i].shutdown = shutdown; rendermodule[i].newmap = newmap; + rendermodule[i].devicelost = devicelost; + rendermodule[i].devicerestored = devicerestored; } void R_Modules_Start(void) @@ -97,3 +101,34 @@ void R_Modules_NewMap(void) R_SkinFrame_Purge(); } +void R_Modules_DeviceLost(void) +{ + int i; + for (i = 0;i < MAXRENDERMODULES;i++) + { + if (rendermodule[i].name == NULL) + continue; + if (!rendermodule[i].active) + continue; + if (!rendermodule[i].devicelost) + continue; + rendermodule[i].devicelost(); + } +} + + +void R_Modules_DeviceRestored(void) +{ + int i; + for (i = 0;i < MAXRENDERMODULES;i++) + { + if (rendermodule[i].name == NULL) + continue; + if (!rendermodule[i].active) + continue; + if (!rendermodule[i].devicerestored) + continue; + rendermodule[i].devicerestored(); + } +} +