aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-02-06 13:03:36 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-06 18:52:54 +0000
commit9e2a319a1bdb8175efb499645846fbbaf27cbf00 (patch)
treeaac89458b06c8aa61114abb2f3002f7ffc3b2075
parent0a51b48e2071ccfe5702f08da7a36543bac382b0 (diff)
SK_USE_SDL is never defined
This CL also removes dead code, SkOSWindow_SDL.cpp. Change-Id: I659dc271a4bcceba7fe29ac5ac6e79d684153870 Reviewed-on: https://skia-review.googlesource.com/8070 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Hal Canary <halcanary@google.com>
-rw-r--r--include/views/SkOSWindow_SDL.h54
-rw-r--r--include/views/SkWindow.h4
-rw-r--r--src/views/sdl/SkOSWindow_SDL.cpp401
3 files changed, 1 insertions, 458 deletions
diff --git a/include/views/SkOSWindow_SDL.h b/include/views/SkOSWindow_SDL.h
deleted file mode 100644
index 65685d1d21..0000000000
--- a/include/views/SkOSWindow_SDL.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef SkOSWindow_SDL_DEFINED
-#define SkOSWindow_SDL_DEFINED
-
-#include "SDL.h"
-#include "SDL_opengl.h"
-#include "SkWindow.h"
-
-class SkOSWindow : public SkWindow {
-public:
- SkOSWindow(void*);
- virtual ~SkOSWindow();
-
- enum SkBackEndTypes {
- kNone_BackEndType, // TODO: remove this, it's not a real option.
- kNativeGL_BackEndType,
-#if SK_ANGLE
- kANGLE_BackEndType,
-#endif // SK_ANGLE
- };
-
- void release();
- bool attach(SkBackEndTypes attachType, int msaaSampleCount, bool deepColor, AttachmentInfo*);
- void present();
- bool makeFullscreen();
- void setVsync(bool);
- void closeWindow();
- static void RunEventLoop();
-
-protected:
- void onSetTitle(const char title[]) override;
-
-private:
- void createWindow(int msaaSampleCount);
- void destroyWindow();
- void updateWindowTitle();
- static SkOSWindow* GetInstanceForWindowID(Uint32 windowID);
- static bool HasDirtyWindows();
- static void UpdateDirtyWindows();
- static void HandleEvent(const SDL_Event&);
-
- SDL_Window* fWindow;
- SDL_GLContext fGLContext;
- int fWindowMSAASampleCount;
- typedef SkWindow INHERITED;
-};
-
-#endif
diff --git a/include/views/SkWindow.h b/include/views/SkWindow.h
index e34bbb6e2f..8b6c29186b 100644
--- a/include/views/SkWindow.h
+++ b/include/views/SkWindow.h
@@ -122,9 +122,7 @@ private:
////////////////////////////////////////////////////////////////////////////////
-#if defined(SK_USE_SDL)
- #include "SkOSWindow_SDL.h"
-#elif defined(SK_BUILD_FOR_MAC)
+#if defined(SK_BUILD_FOR_MAC)
#include "SkOSWindow_Mac.h"
#elif defined(SK_BUILD_FOR_WIN)
#include "SkOSWindow_Win.h"
diff --git a/src/views/sdl/SkOSWindow_SDL.cpp b/src/views/sdl/SkOSWindow_SDL.cpp
deleted file mode 100644
index 88b8353b6c..0000000000
--- a/src/views/sdl/SkOSWindow_SDL.cpp
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-#include "SkOSWindow_SDL.h"
-#include "SkCanvas.h"
-
-#if defined(SK_BUILD_FOR_ANDROID)
-#include <GLES/gl.h>
-#elif defined(SK_BUILD_FOR_UNIX)
-#include <GL/gl.h>
-#elif defined(SK_BUILD_FOR_MAC)
-#include <gl.h>
-#endif
-
-const int kInitialWindowWidth = 640;
-const int kInitialWindowHeight = 480;
-static SkOSWindow* gCurrentWindow;
-
-static void report_sdl_error(const char* failure) {
- const char* error = SDL_GetError();
- SkASSERT(error); // Called only to check SDL error.
- SkDebugf("%s SDL Error: %s.\n", failure, error);
- SDL_ClearError();
-}
-SkOSWindow::SkOSWindow(void*)
- : fWindow(nullptr)
- , fGLContext(nullptr)
- , fWindowMSAASampleCount(0) {
-
- SkASSERT(!gCurrentWindow);
- gCurrentWindow = this;
-
- this->createWindow(0);
-}
-
-SkOSWindow::~SkOSWindow() {
- this->destroyWindow();
- gCurrentWindow = nullptr;
-}
-
-SkOSWindow* SkOSWindow::GetInstanceForWindowID(Uint32 windowID) {
- if (gCurrentWindow &&
- gCurrentWindow->fWindow &&
- SDL_GetWindowID(gCurrentWindow->fWindow) == windowID) {
- return gCurrentWindow;
- }
- return nullptr;
-}
-
-void SkOSWindow::release() {
- if (fGLContext) {
- SDL_GL_DeleteContext(fGLContext);
- fGLContext = nullptr;
- }
-}
-
-bool SkOSWindow::attach(SkBackEndTypes attachType, int msaaSampleCount, bool deepColor,
- AttachmentInfo* info) {
- this->createWindow(msaaSampleCount);
- if (!fWindow) {
- return false;
- }
- if (!fGLContext) {
- fGLContext = SDL_GL_CreateContext(fWindow);
- if (!fGLContext) {
- report_sdl_error("Failed to create SDL GL context.");
- return false;
- }
- glClearColor(0, 0, 0, 0);
- glClearStencil(0);
- glStencilMask(0xffffffff);
- glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- }
-
- if (SDL_GL_MakeCurrent(fWindow, fGLContext) != 0) {
- report_sdl_error("Failed to make SDL GL context current.");
- this->release();
- return false;
- }
-
- info->fSampleCount = msaaSampleCount;
- info->fStencilBits = 8;
-
- glViewport(0, 0, SkScalarRoundToInt(this->width()), SkScalarRoundToInt(this->height()));
- return true;
-}
-
-void SkOSWindow::present() {
- if (!fWindow) {
- return;
- }
- SDL_GL_SwapWindow(fWindow);
-}
-
-bool SkOSWindow::makeFullscreen() {
- if (!fWindow) {
- return false;
- }
- SDL_SetWindowFullscreen(fWindow, SDL_WINDOW_FULLSCREEN_DESKTOP);
- return true;
-}
-
-void SkOSWindow::setVsync(bool vsync) {
- if (!fWindow) {
- return;
- }
- SDL_GL_SetSwapInterval(vsync ? 1 : 0);
-}
-
-void SkOSWindow::closeWindow() {
- this->destroyWindow();
-
- // Currently closing the window causes the app to quit.
- SDL_Event event;
- event.type = SDL_QUIT;
- SDL_PushEvent(&event);
-}
-
-static SkKey convert_sdlkey_to_skkey(SDL_Keycode src) {
- switch (src) {
- case SDLK_UP:
- return kUp_SkKey;
- case SDLK_DOWN:
- return kDown_SkKey;
- case SDLK_LEFT:
- return kLeft_SkKey;
- case SDLK_RIGHT:
- return kRight_SkKey;
- case SDLK_HOME:
- return kHome_SkKey;
- case SDLK_END:
- return kEnd_SkKey;
- case SDLK_ASTERISK:
- return kStar_SkKey;
- case SDLK_HASH:
- return kHash_SkKey;
- case SDLK_0:
- return k0_SkKey;
- case SDLK_1:
- return k1_SkKey;
- case SDLK_2:
- return k2_SkKey;
- case SDLK_3:
- return k3_SkKey;
- case SDLK_4:
- return k4_SkKey;
- case SDLK_5:
- return k5_SkKey;
- case SDLK_6:
- return k6_SkKey;
- case SDLK_7:
- return k7_SkKey;
- case SDLK_8:
- return k8_SkKey;
- case SDLK_9:
- return k9_SkKey;
- default:
- return kNONE_SkKey;
- }
-}
-
-void SkOSWindow::createWindow(int msaaSampleCount) {
- if (fWindowMSAASampleCount != msaaSampleCount) {
- this->destroyWindow();
- }
- if (fWindow) {
- return;
- }
- uint32_t windowFlags =
-#if defined(SK_BUILD_FOR_ANDROID)
- SDL_WINDOW_BORDERLESS | SDL_WINDOW_FULLSCREEN_DESKTOP |
- SDL_WINDOW_ALLOW_HIGHDPI |
-#endif
- SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
-
- // GL settings are part of SDL_WINDOW_OPENGL window creation arguments.
-#if defined(SK_BUILD_FOR_ANDROID)
- // TODO we should try and get a 3.0 context first
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
-#else
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
-#endif
- SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
- SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
-#if defined(SK_BUILD_FOR_UNIX)
- // Apparently MSAA request matches "slow caveat". Make SDL not set anything for caveat for MSAA
- // by setting -1 for ACCELERATED_VISUAL. For non-MSAA, set ACCELERATED_VISUAL to 1 just for
- // compatiblity with other platforms.
- SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, msaaSampleCount > 0 ? -1 : 1);
-#else
- SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
-#endif
- SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, msaaSampleCount > 0 ? 1 : 0);
- SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, msaaSampleCount);
-
- // This is an approximation for sizing purposes.
- bool isInitialWindow = this->width() == 0 && this->height() == 0;
- SkScalar windowWidth = isInitialWindow ? kInitialWindowWidth : this->width();
- SkScalar windowHeight = isInitialWindow ? kInitialWindowHeight : this->height();
-
- fWindow = SDL_CreateWindow(this->getTitle(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
- windowWidth, windowHeight, windowFlags);
- if (!fWindow) {
- report_sdl_error("Failed to create SDL window.");
- return;
- }
- fWindowMSAASampleCount = msaaSampleCount;
-}
-
-void SkOSWindow::destroyWindow() {
- this->release();
- if (fWindow) {
- SDL_DestroyWindow(fWindow);
- fWindow = nullptr;
- fWindowMSAASampleCount = 0;
- }
-}
-
-bool SkOSWindow::HasDirtyWindows() {
- if (gCurrentWindow && gCurrentWindow->fWindow) {
- return gCurrentWindow->isDirty();
- }
- return false;
-}
-
-void SkOSWindow::UpdateDirtyWindows() {
- if (gCurrentWindow && gCurrentWindow->fWindow) {
- if (gCurrentWindow->isDirty()) {
- // This will call present.
- gCurrentWindow->update(nullptr);
- }
- }
-}
-
-void SkOSWindow::HandleEvent(const SDL_Event& event) {
- switch (event.type) {
- case SDL_MOUSEMOTION:
- if (SkOSWindow* window = GetInstanceForWindowID(event.motion.windowID)) {
- if (event.motion.state == SDL_PRESSED) {
- window->handleClick(event.motion.x, event.motion.y,
- SkView::Click::kMoved_State, nullptr);
- }
- }
- break;
- case SDL_MOUSEBUTTONDOWN:
- case SDL_MOUSEBUTTONUP:
- if (SkOSWindow* window = GetInstanceForWindowID(event.button.windowID)) {
- window->handleClick(event.button.x, event.button.y,
- event.button.state == SDL_PRESSED ?
- SkView::Click::kDown_State :
- SkView::Click::kUp_State, nullptr);
- }
- break;
- case SDL_KEYDOWN:
- if (SkOSWindow* window = GetInstanceForWindowID(event.key.windowID)) {
- SDL_Keycode key = event.key.keysym.sym;
- SkKey sk = convert_sdlkey_to_skkey(key);
- if (kNONE_SkKey != sk) {
- if (event.key.state == SDL_PRESSED) {
- window->handleKey(sk);
- } else {
- window->handleKeyUp(sk);
- }
- } else if (key == SDLK_ESCAPE) {
- window->closeWindow();
- }
- }
- break;
- case SDL_TEXTINPUT:
- if (SkOSWindow* window = GetInstanceForWindowID(event.text.windowID)) {
- size_t len = strlen(event.text.text);
- for (size_t i = 0; i < len; i++) {
- window->handleChar((SkUnichar)event.text.text[i]);
- }
- }
- break;
- case SDL_WINDOWEVENT:
- switch (event.window.event) {
- case SDL_WINDOWEVENT_SHOWN:
- // For initialization purposes, we resize upon first show.
- // Fallthrough.
- case SDL_WINDOWEVENT_SIZE_CHANGED:
- if (SkOSWindow* window = GetInstanceForWindowID(event.window.windowID)) {
- int w = 0;
- int h = 0;
- SDL_GetWindowSize(window->fWindow, &w, &h);
- window->resize(w, h);
- }
- break;
- case SDL_WINDOWEVENT_FOCUS_GAINED:
- if (GetInstanceForWindowID(event.text.windowID)) {
- SDL_StartTextInput();
- }
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
-}
-
-SkMSec gTimerDelay;
-
-void SkOSWindow::RunEventLoop() {
- for (;;) {
- SkEvent::ServiceQueueTimer();
- bool hasMoreSkEvents = SkEvent::ProcessEvent();
-
- SDL_Event event;
- bool hasSDLEvents = SDL_PollEvent(&event) == 1;
-
- // Invalidations do not post to event loop, rather we just go through the
- // windows for each event loop iteration.
- bool hasDirtyWindows = HasDirtyWindows();
-
- if (!hasSDLEvents && !hasMoreSkEvents && !hasDirtyWindows) {
- // If there is no SDL events, SkOSWindow updates or SkEvents
- // to be done, wait for the SDL events.
- if (gTimerDelay > 0) {
- hasSDLEvents = SDL_WaitEventTimeout(&event, gTimerDelay) == 1;
- } else {
- hasSDLEvents = SDL_WaitEvent(&event) == 1;
- }
- }
- while (hasSDLEvents) {
- if (event.type == SDL_QUIT) {
- return;
- }
- HandleEvent(event);
- hasSDLEvents = SDL_PollEvent(&event);
- }
- UpdateDirtyWindows();
- }
-}
-
-void SkOSWindow::onSetTitle(const char title[]) {
- if (!fWindow) {
- return;
- }
- this->updateWindowTitle();
-}
-
-void SkOSWindow::updateWindowTitle() {
- SDL_SetWindowTitle(fWindow, this->getTitle());
-}
-///////////////////////////////////////////////////////////////////////////////////////
-
-void SkEvent::SignalNonEmptyQueue() {
- // nothing to do, since we spin on our event-queue
-}
-
-void SkEvent::SignalQueueTimer(SkMSec delay) {
- gTimerDelay = delay;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////
-
-#include "SkApplication.h"
-#include "SkEvent.h"
-#include "SkWindow.h"
-
-#if defined(SK_BUILD_FOR_ANDROID)
-int SDL_main(int argc, char** argv) {
-#else
-int main(int argc, char** argv) {
-#endif
- if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) {
- report_sdl_error("Failed to init SDL.");
- return -1;
- }
-
- application_init();
-
- SkOSWindow* window = create_sk_window(nullptr, argc, argv);
-
- // drain any events that occurred before |window| was assigned.
- while (SkEvent::ProcessEvent());
-
- SkOSWindow::RunEventLoop();
-
- delete window;
- application_term();
-
- SDL_Quit();
-
- return 0;
-}