From c78bf396014d9027f4ef4959e675105aa4817212 Mon Sep 17 00:00:00 2001 From: martinezgerman Date: Tue, 31 Jan 2012 22:55:44 -0800 Subject: [PATCH] Member variable added to keep the current window active status --- cocos2dx/platform/qnx/CCEGLView_qnx.cpp | 24 ++- cocos2dx/platform/qnx/CCEGLView_qnx.h | 244 ++++++++++++------------ 2 files changed, 141 insertions(+), 127 deletions(-) diff --git a/cocos2dx/platform/qnx/CCEGLView_qnx.cpp b/cocos2dx/platform/qnx/CCEGLView_qnx.cpp index 657202cdaa..e9709dfcd0 100644 --- a/cocos2dx/platform/qnx/CCEGLView_qnx.cpp +++ b/cocos2dx/platform/qnx/CCEGLView_qnx.cpp @@ -85,7 +85,8 @@ static CCEGLView* s_pInstance = NULL; CCEGLView::CCEGLView() : m_pDelegate(NULL), m_fScreenScaleFactor(1.0), - m_bNotHVGA(false) + m_bNotHVGA(false), + m_isWindowActive(false) { s_pInstance = this; m_eglDisplay = EGL_NO_DISPLAY; @@ -844,7 +845,6 @@ bool CCEGLView::HandleEvents() if (domain == navigator_get_domain()) { - const bool isPaused = CCDirector::sharedDirector()->isPaused(); switch (bps_event_get_code(event)) { case NAVIGATOR_SWIPE_DOWN: @@ -857,13 +857,19 @@ bool CCEGLView::HandleEvents() break; case NAVIGATOR_WINDOW_INACTIVE: - if(!isPaused) + if(m_isWindowActive) + { CCApplication::sharedApplication().applicationDidEnterBackground(); + m_isWindowActive = false; + } break; case NAVIGATOR_WINDOW_ACTIVE: - if(isPaused) + if(!m_isWindowActive) + { CCApplication::sharedApplication().applicationWillEnterForeground(); + m_isWindowActive = true; + } break; case NAVIGATOR_WINDOW_STATE: @@ -871,12 +877,18 @@ bool CCEGLView::HandleEvents() switch(navigator_event_get_window_state(event)) { case NAVIGATOR_WINDOW_FULLSCREEN: - if(isPaused) + if(!m_isWindowActive) + { CCApplication::sharedApplication().applicationWillEnterForeground(); + m_isWindowActive = true; + } break; case NAVIGATOR_WINDOW_THUMBNAIL: - if(!isPaused) + if(m_isWindowActive) + { CCApplication::sharedApplication().applicationDidEnterBackground(); + m_isWindowActive = false; + } break; } break; diff --git a/cocos2dx/platform/qnx/CCEGLView_qnx.h b/cocos2dx/platform/qnx/CCEGLView_qnx.h index 41d63b7d18..8bb302ba25 100644 --- a/cocos2dx/platform/qnx/CCEGLView_qnx.h +++ b/cocos2dx/platform/qnx/CCEGLView_qnx.h @@ -1,121 +1,123 @@ -/**************************************************************************** -Copyright (c) 2010 cocos2d-x.org - -http://www.cocos2d-x.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -****************************************************************************/ - -#ifndef __CC_EGLVIEW_QNX_H__ -#define __CC_EGLVIEW_QNX_H__ - -#include "CCGeometry.h" -#include -#include -#include -#include - -namespace cocos2d { -class CCSet; -class CCTouch; -class EGLTouchDelegate; - -class CC_DLL CCEGLView -{ -public: - CCEGLView(); - virtual ~CCEGLView(); - - CCSize getSize(); - bool isOpenGLReady(); - /** - * the width and height is the real size of phone - */ - void setFrameWidthAndHeight(int width, int height); - /** - * create a drawing rect, - * the width and heiht is the resource size match best - */ - bool Create(int width, int height); - EGLTouchDelegate* getDelegate(void); - - // keep compatible - void release(); - void setTouchDelegate(EGLTouchDelegate * pDelegate); - void swapBuffers(); - bool canSetContentScaleFactor(); - void setContentScaleFactor(float contentScaleFactor); - void setViewPortInPoints(float x, float y, float w, float h); - void setScissorInPoints(float x, float y, float w, float h); - CCRect getViewPort(); - float getScreenScaleFactor(); - void setIMEKeyboardState(bool bOpen); - - bool HandleEvents(); - - // static function - /** - @brief get the shared main open gl window - */ - static CCEGLView& sharedOpenGLView(); - - // pointer to OES methods from EGL - static PFNGLGENERATEMIPMAPOESPROC glGenerateMipmapOES; - static PFNGLGENFRAMEBUFFERSOESPROC glGenFramebuffersOES; - static PFNGLBINDFRAMEBUFFEROESPROC glBindFramebufferOES; - static PFNGLFRAMEBUFFERTEXTURE2DOESPROC glFramebufferTexture2DOES; - static PFNGLDELETEFRAMEBUFFERSOESPROC glDeleteFramebuffersOES; - static PFNGLCHECKFRAMEBUFFERSTATUSOESPROC glCheckFramebufferStatusOES; - -private: - - bool initGL(); - void initEGLFunctions(); - bool isGLExtension(const char *searchName) const; - bool initDriver(); - void printEGLInfo(const EGLConfig &config) const; - EGLConfig chooseConfig(const EGLDisplay &eglDisplay, const char* str); - int chooseFormat(const EGLDisplay &eglDisplay, const EGLConfig &config); - bool createNativeWindow(const EGLConfig &config); - void showKeyboard(); - void hideKeyboard(); - - CCSize m_sSizeInPixel; - CCSize m_sSizeInPoint; - CCRect m_rcViewPort; - bool m_bNotHVGA; - bool m_isGLInitialized; - - EGLTouchDelegate *m_pDelegate; - float m_fScreenScaleFactor; - - static bool m_initializedFunctions; - static const GLubyte *m_extensions; - - EGLDisplay m_eglDisplay; - EGLContext m_eglContext; - EGLSurface m_eglSurface; - screen_event_t m_screenEvent; - screen_window_t m_screenWindow; - screen_context_t m_screenContext; -}; - -} // end of namespace cocos2d - -#endif // end of __CC_EGLVIEW_QNX_H__ +/**************************************************************************** +Copyright (c) 2010 cocos2d-x.org + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __CC_EGLVIEW_QNX_H__ +#define __CC_EGLVIEW_QNX_H__ + +#include "CCGeometry.h" +#include +#include +#include +#include + +namespace cocos2d { +class CCSet; +class CCTouch; +class EGLTouchDelegate; + +class CC_DLL CCEGLView +{ +public: + CCEGLView(); + virtual ~CCEGLView(); + + CCSize getSize(); + bool isOpenGLReady(); + /** + * the width and height is the real size of phone + */ + void setFrameWidthAndHeight(int width, int height); + /** + * create a drawing rect, + * the width and heiht is the resource size match best + */ + bool Create(int width, int height); + EGLTouchDelegate* getDelegate(void); + + // keep compatible + void release(); + void setTouchDelegate(EGLTouchDelegate * pDelegate); + void swapBuffers(); + bool canSetContentScaleFactor(); + void setContentScaleFactor(float contentScaleFactor); + void setViewPortInPoints(float x, float y, float w, float h); + void setScissorInPoints(float x, float y, float w, float h); + CCRect getViewPort(); + float getScreenScaleFactor(); + void setIMEKeyboardState(bool bOpen); + + bool HandleEvents(); + + // static function + /** + @brief get the shared main open gl window + */ + static CCEGLView& sharedOpenGLView(); + + // pointer to OES methods from EGL + static PFNGLGENERATEMIPMAPOESPROC glGenerateMipmapOES; + static PFNGLGENFRAMEBUFFERSOESPROC glGenFramebuffersOES; + static PFNGLBINDFRAMEBUFFEROESPROC glBindFramebufferOES; + static PFNGLFRAMEBUFFERTEXTURE2DOESPROC glFramebufferTexture2DOES; + static PFNGLDELETEFRAMEBUFFERSOESPROC glDeleteFramebuffersOES; + static PFNGLCHECKFRAMEBUFFERSTATUSOESPROC glCheckFramebufferStatusOES; + +private: + + bool initGL(); + void initEGLFunctions(); + bool isGLExtension(const char *searchName) const; + bool initDriver(); + void printEGLInfo(const EGLConfig &config) const; + EGLConfig chooseConfig(const EGLDisplay &eglDisplay, const char* str); + int chooseFormat(const EGLDisplay &eglDisplay, const EGLConfig &config); + bool createNativeWindow(const EGLConfig &config); + void showKeyboard(); + void hideKeyboard(); + + CCSize m_sSizeInPixel; + CCSize m_sSizeInPoint; + CCRect m_rcViewPort; + bool m_bNotHVGA; + bool m_isGLInitialized; + + EGLTouchDelegate *m_pDelegate; + float m_fScreenScaleFactor; + + bool m_isWindowActive; + + static bool m_initializedFunctions; + static const GLubyte *m_extensions; + + EGLDisplay m_eglDisplay; + EGLContext m_eglContext; + EGLSurface m_eglSurface; + screen_event_t m_screenEvent; + screen_window_t m_screenWindow; + screen_context_t m_screenContext; +}; + +} // end of namespace cocos2d + +#endif // end of __CC_EGLVIEW_QNX_H__