mirror of
https://github.com/aap/librw.git
synced 2024-11-24 20:55:41 +00:00
SDL2: Implement subsystem selection
This commit is contained in:
parent
52d6675249
commit
8796b2ece9
@ -1553,12 +1553,15 @@ startSDL2(void)
|
|||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, profiles[i].major);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, profiles[i].major);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, profiles[i].minor);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, profiles[i].minor);
|
||||||
|
|
||||||
|
SDL_Rect bounds;
|
||||||
|
SDL_GetDisplayBounds(glGlobals.currentMonitor, &bounds);
|
||||||
|
|
||||||
if(mode->flags & VIDEOMODEEXCLUSIVE) {
|
if(mode->flags & VIDEOMODEEXCLUSIVE) {
|
||||||
win = SDL_CreateWindow(glGlobals.winTitle, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, mode->mode.w, mode->mode.h, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN);
|
win = SDL_CreateWindow(glGlobals.winTitle, bounds.x, bounds.y, mode->mode.w, mode->mode.h, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN);
|
||||||
if (win)
|
if (win)
|
||||||
SDL_SetWindowDisplayMode(win, &mode->mode);
|
SDL_SetWindowDisplayMode(win, &mode->mode);
|
||||||
} else {
|
} else {
|
||||||
win = SDL_CreateWindow(glGlobals.winTitle, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, glGlobals.winWidth, glGlobals.winHeight, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
|
win = SDL_CreateWindow(glGlobals.winTitle, bounds.x, bounds.y, glGlobals.winWidth, glGlobals.winHeight, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
|
||||||
if (win)
|
if (win)
|
||||||
SDL_SetWindowDisplayMode(win, NULL);
|
SDL_SetWindowDisplayMode(win, NULL);
|
||||||
}
|
}
|
||||||
@ -1940,7 +1943,20 @@ deviceSystemSDL2(DeviceReq req, void *arg, int32 n)
|
|||||||
case DEVICEFINALIZE:
|
case DEVICEFINALIZE:
|
||||||
return finalizeOpenGL();
|
return finalizeOpenGL();
|
||||||
|
|
||||||
// TODO: implement subsystems
|
case DEVICEGETNUMSUBSYSTEMS:
|
||||||
|
return SDL_GetNumVideoDisplays();
|
||||||
|
case DEVICEGETSUBSSYSTEMINFO:
|
||||||
|
if (n > SDL_GetNumVideoDisplays())
|
||||||
|
return 0;
|
||||||
|
strncpy(((SubSystemInfo*)arg)->name, SDL_GetDisplayName(n), sizeof(SubSystemInfo::name));
|
||||||
|
return 1;
|
||||||
|
case DEVICEGETCURRENTSUBSYSTEM:
|
||||||
|
return glGlobals.currentMonitor;
|
||||||
|
case DEVICESETSUBSYSTEM:
|
||||||
|
if (n > SDL_GetNumVideoDisplays())
|
||||||
|
return 0;
|
||||||
|
glGlobals.currentMonitor = n;
|
||||||
|
return 1;
|
||||||
|
|
||||||
case DEVICEGETNUMVIDEOMODES:
|
case DEVICEGETNUMVIDEOMODES:
|
||||||
return glGlobals.numModes;
|
return glGlobals.numModes;
|
||||||
@ -1977,20 +1993,6 @@ deviceSystemSDL2(DeviceReq req, void *arg, int32 n)
|
|||||||
case DEVICESETMULTISAMPLINGLEVELS:
|
case DEVICESETMULTISAMPLINGLEVELS:
|
||||||
glGlobals.numSamples = (uint32)n;
|
glGlobals.numSamples = (uint32)n;
|
||||||
return 1;
|
return 1;
|
||||||
case DEVICEGETNUMSUBSYSTEMS:
|
|
||||||
return SDL_GetNumVideoDisplays();
|
|
||||||
case DEVICEGETSUBSSYSTEMINFO:
|
|
||||||
if (n > SDL_GetNumVideoDisplays())
|
|
||||||
return 0;
|
|
||||||
strncpy(((SubSystemInfo*)arg)->name, SDL_GetDisplayName(n), sizeof(SubSystemInfo::name));
|
|
||||||
return 1;
|
|
||||||
case DEVICEGETCURRENTSUBSYSTEM:
|
|
||||||
return 0; // FIXME: Returns first monitor index, instead of current
|
|
||||||
case DEVICESETSUBSYSTEM:
|
|
||||||
if (n > SDL_GetNumVideoDisplays())
|
|
||||||
return 0;
|
|
||||||
// TODO: Set monitor index to be use
|
|
||||||
return 1;
|
|
||||||
default:
|
default:
|
||||||
assert(0 && "not implemented");
|
assert(0 && "not implemented");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -45,8 +45,8 @@ struct GlGlobals
|
|||||||
|
|
||||||
GLFWmonitor *monitor;
|
GLFWmonitor *monitor;
|
||||||
int numMonitors;
|
int numMonitors;
|
||||||
int currentMonitor;
|
|
||||||
#endif
|
#endif
|
||||||
|
int currentMonitor;
|
||||||
|
|
||||||
DisplayMode *modes;
|
DisplayMode *modes;
|
||||||
int numModes;
|
int numModes;
|
||||||
|
Loading…
Reference in New Issue
Block a user