From 6211668e9f5c35953d37b327fea445127e9f3682 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 11 Dec 2016 12:01:01 -0800 Subject: [PATCH] Fixed creating a renderer on the dummy driver on Mac OS X --- src/video/SDL_sysvideo.h | 3 ++- src/video/SDL_video.c | 9 +++++++-- src/video/dummy/SDL_nullvideo.c | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 53ef9b361..57a26f720 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -288,6 +288,7 @@ struct SDL_VideoDevice /* * * */ /* Data common to all drivers */ + SDL_bool is_dummy; SDL_bool suspend_screensaver; int num_displays; SDL_VideoDisplay *displays; @@ -295,7 +296,7 @@ struct SDL_VideoDevice SDL_Window *grabbed_window; Uint8 window_magic; Uint32 next_object_id; - char * clipboard_text; + char *clipboard_text; /* * * */ /* Data used by the GL drivers */ diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 18d756a81..230a3f49f 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -172,6 +172,11 @@ ShouldUseTextureFramebuffer() return SDL_TRUE; } + /* If this is the dummy driver there is no texture support */ + if (_this->is_dummy) { + return SDL_FALSE; + } + /* If the user has specified a software renderer we can't use a texture framebuffer, or renderer creation will go recursive. */ @@ -1175,7 +1180,7 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) if (window->is_destroying && (window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP) return 0; - if (SDL_strcmp(_this->name, "dummy") != 0) { + if (!_this->is_dummy) { /* If we're switching between a fullscreen Space and "normal" fullscreen, we need to get back to normal first. */ if (fullscreen && ((window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP) && ((window->flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN)) { if (!Cocoa_SetWindowFullscreenSpace(window, SDL_FALSE)) { @@ -1369,7 +1374,7 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) /* Some platforms have OpenGL enabled by default */ #if (SDL_VIDEO_OPENGL && __MACOSX__) || __IPHONEOS__ || __ANDROID__ || __NACL__ - if (SDL_strcmp(_this->name, "dummy") != 0) { + if (!_this->is_dummy) { flags |= SDL_WINDOW_OPENGL; } #endif diff --git a/src/video/dummy/SDL_nullvideo.c b/src/video/dummy/SDL_nullvideo.c index 96f47813a..c419748c5 100644 --- a/src/video/dummy/SDL_nullvideo.c +++ b/src/video/dummy/SDL_nullvideo.c @@ -84,6 +84,7 @@ DUMMY_CreateDevice(int devindex) SDL_OutOfMemory(); return (0); } + device->is_dummy = SDL_TRUE; /* Set the function pointers */ device->VideoInit = DUMMY_VideoInit;