diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 8cf195d..1ac5485 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1520,7 +1520,7 @@ SDL_CreateWindowFrom(const void *data) } window->magic = &_this->window_magic; window->id = _this->next_object_id++; - window->flags = SDL_WINDOW_FOREIGN; + window->flags = SDL_WINDOW_FOREIGN | SDL_WINDOW_OPENGL; window->last_fullscreen_flags = window->flags; window->is_destroying = SDL_FALSE; window->opacity = 1.0f; @@ -1531,6 +1531,16 @@ SDL_CreateWindowFrom(const void *data) } _this->windows = window; + if (window->flags & SDL_WINDOW_OPENGL) { + if (!_this->GL_CreateContext) { + SDL_SetError("No OpenGL support in video driver"); + return NULL; + } + if (SDL_GL_LoadLibrary(NULL) < 0) { + return NULL; + } + } + if (_this->CreateSDLWindowFrom(_this, window, data) < 0) { SDL_DestroyWindow(window); return NULL; diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index b082443..6cf8686 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -398,6 +398,15 @@ WIN_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) #if SDL_VIDEO_OPENGL_WGL { + if (window->flags & SDL_WINDOW_OPENGL) { + WIN_GL_InitExtensions(_this); + + if (WIN_GL_SetupWindow(_this, window) < 0) { + WIN_DestroyWindow(_this, window); + return -1; + } + } + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT); if (hint) { /* This hint is a pointer (in string form) of the address of