diff options
author | Cameron Cawley | 2019-09-08 19:37:48 +0100 |
---|---|---|
committer | GitHub | 2019-09-08 19:37:48 +0100 |
commit | 7a05624e1b3371a2823a46749083fe4bc9eb4a60 (patch) | |
tree | bbea40660b338a7f830a15a0d9d1a18ed283ccb5 /backends/platform/android/android.h | |
parent | 997e15878ad72e773ca3835b756daf02d0f7334d (diff) | |
download | scummvm-rg350-7a05624e1b3371a2823a46749083fe4bc9eb4a60.tar.gz scummvm-rg350-7a05624e1b3371a2823a46749083fe4bc9eb4a60.tar.bz2 scummvm-rg350-7a05624e1b3371a2823a46749083fe4bc9eb4a60.zip |
ANDROID: Rewrite to make use of OpenGLGraphicsManager (#1695)
* ANDROID: Rewrite to make use of OpenGLGraphicsManager
* ANDROID: Fix emulated mouse button up events
Diffstat (limited to 'backends/platform/android/android.h')
-rw-r--r-- | backends/platform/android/android.h | 173 |
1 files changed, 8 insertions, 165 deletions
diff --git a/backends/platform/android/android.h b/backends/platform/android/android.h index d88df6b15f..96219c28de 100644 --- a/backends/platform/android/android.h +++ b/backends/platform/android/android.h @@ -28,25 +28,16 @@ #include "common/fs.h" #include "common/archive.h" #include "audio/mixer_intern.h" -#include "graphics/palette.h" -#include "graphics/surface.h" -#include "backends/base-backend.h" +#include "backends/modular-backend.h" #include "backends/plugins/posix/posix-provider.h" #include "backends/fs/posix/posix-fs-factory.h" -#include "backends/platform/android/texture.h" - #include <pthread.h> #include <android/log.h> -#include <GLES/gl.h> -#include <GLES/glext.h> - // toggles start //#define ANDROID_DEBUG_ENTER -//#define ANDROID_DEBUG_GL -//#define ANDROID_DEBUG_GL_CALLS // toggles end extern const char *android_log_tag; @@ -63,76 +54,13 @@ extern const char *android_log_tag; #define ENTER(fmt, args...) do { } while (false) #endif -#ifdef ANDROID_DEBUG_GL -extern void checkGlError(const char *expr, const char *file, int line); - -#ifdef ANDROID_DEBUG_GL_CALLS -#define GLCALLLOG(x, before) \ - do { \ - if (before) \ - LOGD("calling '%s' (%s:%d)", x, __FILE__, __LINE__); \ - else \ - LOGD("returned from '%s' (%s:%d)", x, __FILE__, __LINE__); \ - } while (false) -#else -#define GLCALLLOG(x, before) do { } while (false) -#endif - -#define GLCALL(x) \ - do { \ - GLCALLLOG(#x, true); \ - (x); \ - GLCALLLOG(#x, false); \ - checkGlError(#x, __FILE__, __LINE__); \ - } while (false) - -#define GLTHREADCHECK \ - do { \ - assert(pthread_self() == _main_thread); \ - } while (false) - -#else -#define GLCALL(x) do { (x); } while (false) -#define GLTHREADCHECK do { } while (false) -#endif - -class MutexManager; - -class OSystem_Android : public EventsBaseBackend, public PaletteManager { +class OSystem_Android : public ModularBackend, Common::EventSource { private: // passed from the dark side int _audio_sample_rate; int _audio_buffer_size; int _screen_changeid; - int _egl_surface_width; - int _egl_surface_height; - bool _htc_fail; - - bool _force_redraw; - - // Game layer - GLESBaseTexture *_game_texture; - int _shake_offset; - Common::Rect _focus_rect; - - // Overlay layer - GLES4444Texture *_overlay_texture; - bool _show_overlay; - - // Mouse layer - GLESBaseTexture *_mouse_texture; - GLESBaseTexture *_mouse_texture_palette; - GLES5551Texture *_mouse_texture_rgb; - Common::Point _mouse_hotspot; - uint32 _mouse_keycolor; - int _mouse_targetscale; - bool _show_mouse; - bool _use_mouse_palette; - - int _graphicsMode; - bool _fullscreen; - bool _ar_correction; pthread_t _main_thread; @@ -144,70 +72,27 @@ private: pthread_t _audio_thread; static void *audioThreadFunc(void *arg); - bool _enable_zoning; bool _virtkeybd_on; - MutexManager *_mutexManager; Audio::MixerImpl *_mixer; timeval _startTime; Common::String getSystemProperty(const char *name) const; - void initSurface(); - void deinitSurface(); - void initViewport(); - - void initOverlay(); - -#ifdef USE_RGB_COLOR - void initTexture(GLESBaseTexture **texture, uint width, uint height, - const Graphics::PixelFormat *format); -#endif - void setupKeymapper(); - void setCursorPaletteInternal(const byte *colors, uint start, uint num); + +protected: + virtual Common::EventSource *getDefaultEventSource() { return this; } public: OSystem_Android(int audio_sample_rate, int audio_buffer_size); virtual ~OSystem_Android(); virtual void initBackend(); - void enableZoning(bool enable) { _enable_zoning = enable; } - - virtual bool hasFeature(Feature f); - virtual void setFeatureState(Feature f, bool enable); - virtual bool getFeatureState(Feature f); - - virtual const GraphicsMode *getSupportedGraphicsModes() const; - virtual int getDefaultGraphicsMode() const; - virtual bool setGraphicsMode(int mode); - virtual int getGraphicsMode() const; - -#ifdef USE_RGB_COLOR - virtual Graphics::PixelFormat getScreenFormat() const; - virtual Common::List<Graphics::PixelFormat> getSupportedFormats() const; -#endif - - virtual void initSize(uint width, uint height, - const Graphics::PixelFormat *format); - - enum FixupType { - kClear = 0, // glClear - kClearSwap, // glClear + swapBuffers - kClearUpdate // glClear + updateScreen - }; - - void clearScreen(FixupType type, byte count = 1); - void updateScreenRect(); - virtual int getScreenChangeID() const; - - virtual int16 getHeight(); - virtual int16 getWidth(); - - virtual PaletteManager *getPaletteManager() { - return this; - } + virtual bool hasFeature(OSystem::Feature f); + virtual void setFeatureState(OSystem::Feature f, bool enable); + virtual bool getFeatureState(OSystem::Feature f); public: void pushEvent(int type, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); @@ -230,58 +115,16 @@ private: void clipMouse(Common::Point &p); void scaleMouse(Common::Point &p, int x, int y, bool deductDrawRect = true, bool touchpadMode = false); - void updateEventScale(); - void disableCursorPalette(); - -protected: - // PaletteManager API - virtual void setPalette(const byte *colors, uint start, uint num); - virtual void grabPalette(byte *colors, uint start, uint num) const; public: - virtual void copyRectToScreen(const void *buf, int pitch, int x, int y, - int w, int h); - virtual void updateScreen(); - virtual Graphics::Surface *lockScreen(); - virtual void unlockScreen(); - virtual void setShakePos(int shakeOffset); - virtual void fillScreen(uint32 col); - virtual void setFocusRectangle(const Common::Rect& rect); - virtual void clearFocusRectangle(); - - virtual void showOverlay(); - virtual void hideOverlay(); - virtual void clearOverlay(); - virtual void grabOverlay(void *buf, int pitch); - virtual void copyRectToOverlay(const void *buf, int pitch, - int x, int y, int w, int h); - virtual int16 getOverlayHeight(); - virtual int16 getOverlayWidth(); - virtual Graphics::PixelFormat getOverlayFormat() const; - - virtual bool showMouse(bool visible); - - virtual void warpMouse(int x, int y); - virtual void setMouseCursor(const void *buf, uint w, uint h, int hotspotX, - int hotspotY, uint32 keycolor, - bool dontScale, - const Graphics::PixelFormat *format); - virtual void setCursorPalette(const byte *colors, uint start, uint num); - virtual void pushEvent(const Common::Event &event); virtual bool pollEvent(Common::Event &event); virtual uint32 getMillis(bool skipRecord = false); virtual void delayMillis(uint msecs); - virtual MutexRef createMutex(void); - virtual void lockMutex(MutexRef mutex); - virtual void unlockMutex(MutexRef mutex); - virtual void deleteMutex(MutexRef mutex); - virtual void quit(); virtual void setWindowCaption(const char *caption); - virtual void displayMessageOnOSD(const char *msg); virtual void showVirtualKeyboard(bool enable); virtual Audio::Mixer *getMixer(); |