mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 01:55:19 -04:00
Properly delete entity skins on context lost. So now the game should completely handle context lost/restore on webgl/opengl es backends.
This commit is contained in:
parent
0690c91865
commit
03030afe8a
23
src/Entity.c
23
src/Entity.c
@ -617,15 +617,14 @@ static void Entities_ContextLost(void* obj) {
|
|||||||
Entity_ContextLost(Entities.List[i]);
|
Entity_ContextLost(Entities.List[i]);
|
||||||
}
|
}
|
||||||
Gfx_DeleteTexture(&ShadowComponent_ShadowTex);
|
Gfx_DeleteTexture(&ShadowComponent_ShadowTex);
|
||||||
}
|
|
||||||
|
|
||||||
static void Entities_ContextRecreated(void* obj) {
|
if (Gfx.ManagedTextures) return;
|
||||||
int i;
|
|
||||||
for (i = 0; i < ENTITIES_MAX_COUNT; i++) {
|
for (i = 0; i < ENTITIES_MAX_COUNT; i++) {
|
||||||
if (!Entities.List[i]) continue;
|
if (!Entities.List[i]) continue;
|
||||||
/* name redraw is deferred until rendered */
|
DeleteSkin(Entities.List[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* No OnContextCreated, names/skin textures remade when needed */
|
||||||
|
|
||||||
static void Entities_ChatFontChanged(void* obj) {
|
static void Entities_ChatFontChanged(void* obj) {
|
||||||
int i;
|
int i;
|
||||||
@ -1127,14 +1126,12 @@ void NetPlayer_Init(struct NetPlayer* p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*---------------------------------------------------Entities component----------------------------------------------------*
|
*---------------------------------------------------Entities component----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static void Entities_Init(void) {
|
static void Entities_Init(void) {
|
||||||
Event_RegisterVoid(&GfxEvents.ContextLost, NULL, Entities_ContextLost);
|
Event_RegisterVoid(&GfxEvents.ContextLost, NULL, Entities_ContextLost);
|
||||||
Event_RegisterVoid(&GfxEvents.ContextRecreated, NULL, Entities_ContextRecreated);
|
Event_RegisterVoid(&ChatEvents.FontChanged, NULL, Entities_ChatFontChanged);
|
||||||
Event_RegisterVoid(&ChatEvents.FontChanged, NULL, Entities_ChatFontChanged);
|
|
||||||
|
|
||||||
Entities.NamesMode = Options_GetEnum(OPT_NAMES_MODE, NAME_MODE_HOVERED,
|
Entities.NamesMode = Options_GetEnum(OPT_NAMES_MODE, NAME_MODE_HOVERED,
|
||||||
NameMode_Names, Array_Elems(NameMode_Names));
|
NameMode_Names, Array_Elems(NameMode_Names));
|
||||||
@ -1155,13 +1152,9 @@ static void Entities_Free(void) {
|
|||||||
Entities_Remove((EntityID)i);
|
Entities_Remove((EntityID)i);
|
||||||
}
|
}
|
||||||
|
|
||||||
Event_UnregisterVoid(&GfxEvents.ContextLost, NULL, Entities_ContextLost);
|
Event_UnregisterVoid(&GfxEvents.ContextLost, NULL, Entities_ContextLost);
|
||||||
Event_UnregisterVoid(&GfxEvents.ContextRecreated, NULL, Entities_ContextRecreated);
|
Event_UnregisterVoid(&ChatEvents.FontChanged, NULL, Entities_ChatFontChanged);
|
||||||
Event_UnregisterVoid(&ChatEvents.FontChanged, NULL, Entities_ChatFontChanged);
|
Gfx_DeleteTexture(&ShadowComponent_ShadowTex);
|
||||||
|
|
||||||
if (ShadowComponent_ShadowTex) {
|
|
||||||
Gfx_DeleteTexture(&ShadowComponent_ShadowTex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct IGameComponent Entities_Component = {
|
struct IGameComponent Entities_Component = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user