From 87ceb0f9cb6a3771b6da1373949f4065e0f37141 Mon Sep 17 00:00:00 2001 From: SNMetamorph <25657591+SNMetamorph@users.noreply.github.com> Date: Wed, 27 Apr 2022 22:38:33 +0400 Subject: [PATCH] engine: client: fixed checking client library for vgui_support interface export --- engine/client/cl_scrn.c | 4 +- engine/client/vgui/vgui_draw.c | 80 +++++++++++++++++----------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/engine/client/cl_scrn.c b/engine/client/cl_scrn.c index afc3a959..62a42047 100644 --- a/engine/client/cl_scrn.c +++ b/engine/client/cl_scrn.c @@ -781,6 +781,7 @@ SCR_VidInit */ void SCR_VidInit( void ) { + string libpath; if( !ref.initialized ) // don't call VidInit too soon return; @@ -795,7 +796,8 @@ void SCR_VidInit( void ) gameui.globals->scrHeight = refState.height; } - VGui_Startup( NULL, refState.width, refState.height ); // initialized already, so pass NULL + COM_GetCommonLibraryPath( LIBRARY_CLIENT, libpath, sizeof( libpath )); + VGui_Startup( libpath, refState.width, refState.height ); CL_ClearSpriteTextures(); // now all hud sprites are invalid diff --git a/engine/client/vgui/vgui_draw.c b/engine/client/vgui/vgui_draw.c index a7456256..b021ed74 100644 --- a/engine/client/vgui/vgui_draw.c +++ b/engine/client/vgui/vgui_draw.c @@ -152,7 +152,6 @@ void VGui_Startup( const char *clientlib, int width, int height ) VGui_FillAPIFromRef( &vgui, &ref.dllFuncs ); -#ifdef XASH_INTERNAL_GAMELIBS s_pVGuiSupport = COM_LoadLibrary( clientlib, false, false ); if( s_pVGuiSupport ) @@ -162,58 +161,57 @@ void VGui_Startup( const char *clientlib, int width, int height ) { F( &vgui ); vgui.initialized = true; - VGUI_InitCursors(); - Con_Reportf( "vgui_support: found interal client support\n" ); + Con_Reportf( "vgui_support: found internal client support\n" ); } } -#endif // XASH_INTERNAL_GAMELIBS - // HACKHACK: load vgui with correct path first if specified. - // it will be reused while resolving vgui support and client deps - if( Sys_GetParmFromCmdLine( "-vguilib", vguilib ) ) + if( !vgui.initialized ) { - if( Q_strstr( vguilib, ".dll") ) + // HACKHACK: load vgui with correct path first if specified. + // it will be reused while resolving vgui support and client deps + if( Sys_GetParmFromCmdLine( "-vguilib", vguilib )) + { + if( Q_strstr( vguilib, ".dll" )) + Q_strncpy( vguiloader, "vgui_support.dll", 256 ); + else + Q_strncpy( vguiloader, VGUI_SUPPORT_DLL, 256 ); + + if( !COM_LoadLibrary( vguilib, false, false )) + Con_Reportf( S_WARN "VGUI preloading failed. Default library will be used! Reason: %s\n", COM_GetLibraryError() ); + } + + if( Q_strstr( clientlib, ".dll" )) Q_strncpy( vguiloader, "vgui_support.dll", 256 ); - else + + if( !vguiloader[0] && !Sys_GetParmFromCmdLine( "-vguiloader", vguiloader )) Q_strncpy( vguiloader, VGUI_SUPPORT_DLL, 256 ); - if( !COM_LoadLibrary( vguilib, false, false ) ) - Con_Reportf( S_WARN "VGUI preloading failed. Default library will be used! Reason: %s\n", COM_GetLibraryError()); - } + s_pVGuiSupport = COM_LoadLibrary( vguiloader, false, false ); - if( Q_strstr( clientlib, ".dll" ) ) - Q_strncpy( vguiloader, "vgui_support.dll", 256 ); - - if( !vguiloader[0] && !Sys_GetParmFromCmdLine( "-vguiloader", vguiloader ) ) - Q_strncpy( vguiloader, VGUI_SUPPORT_DLL, 256 ); - - s_pVGuiSupport = COM_LoadLibrary( vguiloader, false, false ); - - if( !s_pVGuiSupport ) - { - s_pVGuiSupport = COM_LoadLibrary( va( "../%s", vguiloader ), false, false ); - } - - if( !s_pVGuiSupport ) - { - if( FS_FileExists( vguiloader, false ) ) - Con_Reportf( S_ERROR "Failed to load vgui_support library: %s\n", COM_GetLibraryError() ); - else - Con_Reportf( "vgui_support: not found\n" ); - } - else - { - F = COM_GetProcAddress( s_pVGuiSupport, "InitAPI" ); - if( F ) + if( !s_pVGuiSupport ) { - F( &vgui ); - vgui.initialized = true; - VGUI_InitCursors(); + s_pVGuiSupport = COM_LoadLibrary( va( "../%s", vguiloader ), false, false ); + } + + if( !s_pVGuiSupport ) + { + if( FS_FileExists( vguiloader, false )) + Con_Reportf( S_ERROR "Failed to load vgui_support library: %s\n", COM_GetLibraryError() ); + else + Con_Reportf( "vgui_support: not found\n" ); } else - Con_Reportf( S_ERROR "Failed to find vgui_support library entry point!\n" ); + { + F = COM_GetProcAddress( s_pVGuiSupport, "InitAPI" ); + if( F ) + { + F( &vgui ); + vgui.initialized = true; + } + else + Con_Reportf( S_ERROR "Failed to find vgui_support library entry point!\n" ); + } } - } if( height < 480 )