mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 07:11:54 +00:00
- improved SDL_GetWindowBordersSize() pointer loading
https://forum.zdoom.org/viewtopic.php?t=61913
This commit is contained in:
parent
7cbc98e1d0
commit
0e6af71376
2 changed files with 10 additions and 14 deletions
|
@ -52,11 +52,7 @@ protected:
|
|||
|
||||
static const int MIN_WIDTH = 320;
|
||||
static const int MIN_HEIGHT = 200;
|
||||
|
||||
typedef DECLSPEC int SDLCALL (*SDL_GetWindowBordersSizePtr)(SDL_Window *, int *, int *, int *, int *);
|
||||
|
||||
SDL_GetWindowBordersSizePtr SDL_GetWindowBordersSize_;
|
||||
void *sdl_lib;
|
||||
};
|
||||
|
||||
#endif // __POSIX_SDL_GL_SYSFB_H__
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
#include "doomtype.h"
|
||||
|
||||
#include "i_module.h"
|
||||
#include "i_system.h"
|
||||
#include "i_video.h"
|
||||
#include "m_argv.h"
|
||||
|
@ -172,6 +173,11 @@ IVideo *gl_CreateVideo()
|
|||
|
||||
// FrameBuffer implementation -----------------------------------------------
|
||||
|
||||
FModule sdl_lib("SDL2");
|
||||
|
||||
typedef int (*SDL_GetWindowBordersSizePtr)(SDL_Window *, int *, int *, int *, int *);
|
||||
static TOptProc<sdl_lib, SDL_GetWindowBordersSizePtr> SDL_GetWindowBordersSize_("SDL_GetWindowBordersSize");
|
||||
|
||||
SystemGLFrameBuffer::SystemGLFrameBuffer (void *, bool fullscreen)
|
||||
: DFrameBuffer (vid_defwidth, vid_defheight)
|
||||
{
|
||||
|
@ -180,10 +186,9 @@ SystemGLFrameBuffer::SystemGLFrameBuffer (void *, bool fullscreen)
|
|||
// SDL_GetWindowBorderSize() is only available since 2.0.5, but because
|
||||
// GZDoom supports platforms with older SDL2 versions, this function
|
||||
// has to be dynamically loaded
|
||||
sdl_lib = SDL_LoadObject("libSDL2.so");
|
||||
if (sdl_lib != nullptr)
|
||||
if (!sdl_lib.IsLoaded())
|
||||
{
|
||||
SDL_GetWindowBordersSize_ = (SDL_GetWindowBordersSizePtr)SDL_LoadFunction(sdl_lib,"SDL_GetWindowBordersSize");
|
||||
sdl_lib.Load({ "libSDL2.so", "libSDL2-2.0.so" });
|
||||
}
|
||||
|
||||
// NOTE: Core profiles were added with GL 3.2, so there's no sense trying
|
||||
|
@ -261,11 +266,6 @@ SystemGLFrameBuffer::SystemGLFrameBuffer (void *, bool fullscreen)
|
|||
|
||||
SystemGLFrameBuffer::~SystemGLFrameBuffer ()
|
||||
{
|
||||
if (sdl_lib != nullptr)
|
||||
{
|
||||
SDL_UnloadObject(sdl_lib);
|
||||
}
|
||||
|
||||
if (Screen)
|
||||
{
|
||||
ResetGammaTable();
|
||||
|
@ -391,7 +391,7 @@ void SystemGLFrameBuffer::SetWindowSize(int w, int h)
|
|||
|
||||
void SystemGLFrameBuffer::GetWindowBordersSize(int &top, int &left)
|
||||
{
|
||||
if (SDL_GetWindowBordersSize_ != nullptr)
|
||||
if (SDL_GetWindowBordersSize_)
|
||||
{
|
||||
SDL_GetWindowBordersSize_(Screen, &top, &left, nullptr, nullptr);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue