From: <vo...@us...> - 2009-09-18 09:46:36
|
Revision: 1280 http://opde.svn.sourceforge.net/opde/?rev=1280&view=rev Author: volca Date: 2009-09-18 09:46:27 +0000 (Fri, 18 Sep 2009) Log Message: ----------- screen resolution initial broadcast and related. Modified Paths: -------------- trunk/src/services/render/RenderService.cpp trunk/src/services/render/RenderService.h Modified: trunk/src/services/render/RenderService.cpp =================================================================== --- trunk/src/services/render/RenderService.cpp 2009-09-18 09:45:36 UTC (rev 1279) +++ trunk/src/services/render/RenderService.cpp 2009-09-18 09:46:27 UTC (rev 1280) @@ -179,7 +179,8 @@ mHasRefsProperty(NULL), mRenderTypeProperty(NULL), mRenderAlphaProperty(NULL), - mZBiasProperty(NULL) { + mZBiasProperty(NULL), + mCurrentSize(0,0) { // TODO: This is just plain wrong. This service should be the maintainer of the used scene manager, if any other service needs the direct handle, etc. // The fact is this service is probably game only, and should be the initialiser of graphics as the whole. This will be the @@ -281,7 +282,14 @@ // Initialise and create a default rendering window mRenderWindow = mRoot->initialise( true, "openDarkEngine" ); - + + // inform all listeners about the current resolution + mCurrentSize.fullscreen = mRenderWindow->isFullScreen(); + mCurrentSize.width = mRenderWindow->getWidth(); + mCurrentSize.height = mRenderWindow->getHeight(); + + broadcastScreenSize(); + // Dark scene manager factory LOG_DEBUG("RenderService::init(): new DarkSceneManagerFactory()"); mDarkSMFactory = new DarkSceneManagerFactory(); @@ -366,12 +374,7 @@ mCurrentSize.width = width; mCurrentSize.height = height; - RenderServiceMsg msg; - - msg.msg_type = RENDER_WINDOW_SIZE_CHANGE; - msg.size = mCurrentSize; - - broadcastMessage(msg); + broadcastScreenSize(); } // -------------------------------------------------------------------------- @@ -858,6 +861,16 @@ } + // -------------------------------------------------------------------------- + void RenderService::broadcastScreenSize() { + RenderServiceMsg msg; + + msg.msg_type = RENDER_WINDOW_SIZE_CHANGE; + msg.size = mCurrentSize; + + broadcastMessage(msg); + } + //-------------------------- Factory implementation std::string RenderServiceFactory::mName = "RenderService"; Modified: trunk/src/services/render/RenderService.h =================================================================== --- trunk/src/services/render/RenderService.h 2009-09-18 09:45:36 UTC (rev 1279) +++ trunk/src/services/render/RenderService.h 2009-09-18 09:46:27 UTC (rev 1280) @@ -60,8 +60,6 @@ /// window size message details struct RenderWindowSize { - /// The message type - RenderMessageType msg_type; /// New width of the window (pixels) unsigned int width; /// New height of the window (pixels) @@ -69,10 +67,13 @@ /// The new window is fullscreen (or windowed) bool fullscreen; // TODO: Pixelformat + + RenderWindowSize() : width(0), height(0), fullscreen(false) {}; + RenderWindowSize(unsigned int w, unsigned int h, bool fs = false) : width(w), height(h), fullscreen(fs) {}; }; /// Render service message (Used to signalize a change in the renderer setup) - union RenderServiceMsg { + struct RenderServiceMsg { RenderMessageType msg_type; RenderWindowSize size; @@ -235,6 +236,9 @@ /// prepares the object service structures used by renderer service void createProperties(); + + /// broadcasts the new windows size + void broadcastScreenSize(); ObjectEntityMap mEntityMap; @@ -307,6 +311,7 @@ ZBiasProperty* mZBiasProperty; Ogre::uint8 mDefaultRenderQueue; + private: RenderWindowSize mCurrentSize; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |