skia2/include/views/SkOSWindow_SDL.h
kkinnunen abc0c8216b SampleApp: Cleanup SkOSWindow_SDL
Implements:
 * Event loop event waiting (no busy loop)
 ** Skia timers
 * Proper window sizing and resizing
 * MSAA on X11 (previously it did not use MSAA at all)
 * Changes requested colorspace from 565 to 8888
   to match non-SDL variants
 * Context creation clearing (color and stencil mask)
 * Opens the window in 640x480 by default on desktop.

Removes dead code.

BUG=skia:4733
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1578173002

Review URL: https://codereview.chromium.org/1578173002
2016-01-14 05:37:51 -08:00

58 lines
1.4 KiB
C++

/*
* 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
#if SK_COMMAND_BUFFER
kCommandBuffer_BackEndType,
#endif // SK_COMMAND_BUFFER
};
void detach();
bool attach(SkBackEndTypes attachType, int msaaSampleCount, 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