Skip to content

Commit 341a480

Browse files
committed
Main: RenderWindow - provide default resize impl
1 parent 79790ce commit 341a480

File tree

18 files changed

+38
-146
lines changed

18 files changed

+38
-146
lines changed

OgreMain/include/OgreRenderWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ namespace Ogre
121121

122122
/** Alter the size of the window.
123123
*/
124-
virtual void resize(unsigned int widthPt, unsigned int heightPt) = 0;
124+
virtual void resize(unsigned int widthPt, unsigned int heightPt);
125125

126126
/** Query the current size and position from an external window handle.
127127
@note most of the time you already know the size and should call @ref resize instead.

OgreMain/src/OgreRenderWindow.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ THE SOFTWARE.
2727
*/
2828
#include "OgreStableHeaders.h"
2929
#include "OgreRenderWindow.h"
30+
#include "OgreViewport.h"
3031

3132
namespace Ogre {
3233

@@ -36,6 +37,16 @@ namespace Ogre {
3637
mAutoDeactivatedOnFocusChange = true;
3738
}
3839

40+
void RenderWindow::resize(unsigned int widthPt, unsigned int heightPt)
41+
{
42+
mWidth = widthPt;
43+
mHeight = heightPt;
44+
45+
// Notify viewports of resize
46+
for (auto it : mViewportList)
47+
it.second->_updateDimensions();
48+
}
49+
3950
//-----------------------------------------------------------------------
4051
void RenderWindow::getMetrics(unsigned int& width, unsigned int& height,
4152
int& left, int& top) const

RenderSystems/Direct3D11/include/OgreD3D11RenderWindow.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ namespace Ogre
9090
ComPtr<IDXGIDeviceN> _queryDxgiDevice() { ComPtr<IDXGIDeviceN> res; _queryDxgiDeviceImpl(res.GetAddressOf()); return res; }
9191
void _queryDxgiDeviceImpl(IDXGIDeviceN** dxgiDevice); // release after use
9292

93-
void _updateViewportsDimensions();
94-
9593
protected:
9694
D3D11Device & mDevice; // D3D11 driver
9795
bool mIsExternal; // window not created by Ogre

RenderSystems/Direct3D11/src/OgreD3D11RenderWindow.cpp

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ THE SOFTWARE.
3232
#include "OgreRoot.h"
3333
#include "OgreD3D11DepthBuffer.h"
3434
#include "OgreD3D11Texture.h"
35-
#include "OgreViewport.h"
3635
#include "OgreLogManager.h"
3736
#include "OgreHardwarePixelBuffer.h"
3837
#if OGRE_NO_QUAD_BUFFER_STEREO == 0
@@ -222,14 +221,6 @@ namespace Ogre
222221
RenderWindow::updateImpl();
223222
}
224223
//---------------------------------------------------------------------
225-
void D3D11RenderWindowBase::_updateViewportsDimensions()
226-
{
227-
// Notify viewports of resize
228-
ViewportList::iterator it = mViewportList.begin();
229-
while( it != mViewportList.end() )
230-
(*it++).second->_updateDimensions();
231-
}
232-
//---------------------------------------------------------------------
233224
void D3D11RenderWindowBase::_queryDxgiDeviceImpl(IDXGIDeviceN** dxgiDevice)
234225
{
235226
if (mDevice.isNull())
@@ -478,9 +469,7 @@ namespace Ogre
478469
}
479470

480471
_createSizeDependedD3DResources();
481-
482-
// Notify viewports of resize
483-
_updateViewportsDimensions();
472+
rsys->_setViewport(NULL); // force reset viewport settings
484473
rsys->fireDeviceEvent(&mDevice,"RenderWindowResized",this);
485474
}
486475
//---------------------------------------------------------------------
@@ -522,7 +511,7 @@ namespace Ogre
522511
_createSizeDependedD3DResources();
523512

524513
// Notify viewports of resize
525-
_updateViewportsDimensions();
514+
RenderWindow::resize(mWidth, mHeight);
526515
rsys->fireDeviceEvent(&mDevice,"RenderWindowResized",this);
527516
}
528517

@@ -1063,7 +1052,7 @@ namespace Ogre
10631052
if ((oldFullscreen && fullScreen) || mIsExternal)
10641053
{
10651054
// Notify viewports of resize
1066-
_updateViewportsDimensions();
1055+
RenderWindow::resize(mWidth, mHeight);
10671056
}
10681057
}
10691058
}
@@ -1716,13 +1705,9 @@ namespace Ogre
17161705

17171706
_destroySizeDependedD3DResources();
17181707

1719-
mWidth = width;
1720-
mHeight = height;
1708+
RenderWindow::resize(width, height);
17211709

17221710
_createSizeDependedD3DResources();
1723-
1724-
// Notify viewports of resize
1725-
_updateViewportsDimensions();
17261711
}
17271712
//---------------------------------------------------------------------
17281713
void D3D11RenderWindowImageSource::getCustomAttribute( const String& name, void* pData )

RenderSystems/Direct3D9/src/OgreD3D9RenderWindow.cpp

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@ THE SOFTWARE.
2727
*/
2828
#include "OgreD3D9RenderWindow.h"
2929
#include "OgreLogManager.h"
30-
#include "OgreViewport.h"
3130
#include "OgreException.h"
3231
#include "OgreD3D9RenderSystem.h"
3332
#include "OgreRenderSystem.h"
3433
#include "OgreBitwise.h"
35-
#include "OgreImageCodec.h"
3634
#include "OgreStringConverter.h"
3735
#include "OgreRoot.h"
3836
#include "OgreD3D9DeviceManager.h"
@@ -434,10 +432,8 @@ namespace Ogre
434432
// NB don't use windowMovedOrResized since Win32 doesn't know
435433
// about the size change yet
436434
mDevice->invalidate(this);
437-
// Notify viewports of resize
438-
ViewportList::iterator it = mViewportList.begin();
439-
while( it != mViewportList.end() )
440-
(*it++).second->_updateDimensions();
435+
436+
RenderWindow::resize(mWidth, mHeight);
441437
}
442438
}
443439

@@ -918,18 +914,10 @@ namespace Ogre
918914
unsigned int width = rc.right - rc.left;
919915
unsigned int height = rc.bottom - rc.top;
920916

921-
// Case window resized.
922917
if (width != mWidth || height != mHeight)
923918
{
924-
mWidth = rc.right - rc.left;
925-
mHeight = rc.bottom - rc.top;
926-
927-
// Notify viewports of resize
928-
ViewportList::iterator it = mViewportList.begin();
929-
while( it != mViewportList.end() )
930-
(*it++).second->_updateDimensions();
931-
}
932-
919+
RenderWindow::resize(rc.right - rc.left, rc.bottom - rc.top);
920+
}
933921
}
934922
//-----------------------------------------------------------------------------
935923
void D3D9RenderWindow::updateStats( void )

RenderSystems/GLES2/src/EAGL/OgreEAGL2Window.mm

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ of this software and associated documentation files (the "Software"), to deal
3333
#include "OgreRoot.h"
3434
#include "OgreGLES2RenderSystem.h"
3535
#include "OgreGLES2PixelFormat.h"
36-
#include "OgreViewport.h"
3736
#include "OgreLogManager.h"
3837
#include <iomanip>
3938

@@ -129,16 +128,10 @@ of this software and associated documentation files (the "Software"), to deal
129128
EAGLContextGuard ctx_guard(mContext->getContext());
130129

131130
mContext->destroyFramebuffer();
132-
133-
mWidth = widthPx;
134-
mHeight = heightPx;
131+
132+
RenderWindow::resize(widthPx, heightPx);
135133

136134
mContext->createFramebuffer();
137-
138-
for (ViewportList::iterator it = mViewportList.begin(); it != mViewportList.end(); ++it)
139-
{
140-
(*it).second->_updateDimensions();
141-
}
142135
}
143136

144137
void EAGL2Window::windowMovedOrResized()
@@ -155,17 +148,12 @@ of this software and associated documentation files (the "Software"), to deal
155148
EAGLContextGuard ctx_guard(mContext->getContext());
156149
mContext->destroyFramebuffer();
157150

158-
mWidth = width;
159-
mHeight = height;
160151
mLeft = left;
161152
mTop = top;
162153

163-
mContext->createFramebuffer();
154+
RenderWindow::resize(width, height);
164155

165-
for (ViewportList::iterator it = mViewportList.begin(); it != mViewportList.end(); ++it)
166-
{
167-
(*it).second->_updateDimensions();
168-
}
156+
mContext->createFramebuffer();
169157
}
170158

171159
void EAGL2Window::createNativeWindow(uint widthPt, uint heightPt, const NameValuePairList *miscParams)

RenderSystems/GLSupport/include/EGL/OgreEGLWindow.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ namespace Ogre {
6666
void create(const String& name, unsigned int width, unsigned int height, bool fullScreen,
6767
const NameValuePairList* miscParams) override;
6868

69-
void resize(unsigned int width, unsigned int height) override {}
70-
7169
void setFullscreen (bool fullscreen, uint width, uint height) override;
7270
void destroy(void) override;
7371
void swapBuffers() override;

RenderSystems/GLSupport/src/EGL/Android/OgreAndroidEGLWindow.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ THE SOFTWARE.
3535

3636
#include "OgreAndroidEGLSupport.h"
3737
#include "OgreAndroidEGLWindow.h"
38-
#include "OgreViewport.h"
3938

4039
#include <android/native_window.h>
4140

@@ -65,13 +64,7 @@ namespace Ogre {
6564
if (!mActive || (mWidth == width && mHeight == height))
6665
return;
6766

68-
mWidth = width;
69-
mHeight = height;
70-
71-
// Notify viewports of resize
72-
ViewportList::iterator it = mViewportList.begin();
73-
while (it != mViewportList.end())
74-
(*it++).second->_updateDimensions();
67+
RenderWindow::resize(width, height);
7568

7669
EGLint format;
7770
eglGetConfigAttrib(mEglDisplay, mEglConfig, EGL_NATIVE_VISUAL_ID, &format);

RenderSystems/GLSupport/src/EGL/Emscripten/OgreEmscriptenEGLWindow.cpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ THE SOFTWARE.
3535

3636
#include "OgreEmscriptenEGLSupport.h"
3737
#include "OgreEmscriptenEGLWindow.h"
38-
#include "OgreViewport.h"
3938

4039
#include <iostream>
4140
#include <algorithm>
@@ -68,9 +67,7 @@ namespace Ogre {
6867

6968
void EmscriptenEGLWindow::resize(uint width, uint height)
7069
{
71-
mWidth = width;
72-
mHeight = height;
73-
70+
RenderWindow::resize(width, height);
7471

7572
EMSCRIPTEN_RESULT result = emscripten_set_canvas_element_size(mCanvasSelector.c_str(), width, height);
7673
// This is a workaroud for issue: https://github.com/emscripten-core/emscripten/issues/3283.
@@ -86,11 +83,6 @@ namespace Ogre {
8683

8784

8885
LogManager::getSingleton().logMessage("EmscriptenEGLWindow::resize "+mCanvasSelector+" w:" + Ogre::StringConverter::toString(mWidth) + " h:" + Ogre::StringConverter::toString(mHeight));
89-
90-
// Notify viewports of resize
91-
ViewportList::iterator it = mViewportList.begin();
92-
while( it != mViewportList.end() )
93-
(*it++).second->_updateDimensions();
9486
}
9587

9688
void EmscriptenEGLWindow::windowMovedOrResized()
@@ -99,13 +91,8 @@ namespace Ogre {
9991

10092
int w, h;
10193
emscripten_get_canvas_element_size(mCanvasSelector.c_str(), &w, &h);
102-
mWidth = w;
103-
mHeight = h;
10494

105-
// Notify viewports of resize
106-
ViewportList::iterator it = mViewportList.begin();
107-
while( it != mViewportList.end() )
108-
(*it++).second->_updateDimensions();
95+
RenderWindow::resize(w, h);
10996
}
11097

11198
void EmscriptenEGLWindow::switchFullScreen(bool fullscreen)

RenderSystems/GLSupport/src/EGL/WIN32/OgreWin32EGLWindow.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ THE SOFTWARE.
3131
#include "OgreLogManager.h"
3232
#include "OgreStringConverter.h"
3333

34-
#include "OgreViewport.h"
35-
3634
#include "OgreWin32EGLSupport.h"
3735
#include "OgreWin32EGLWindow.h"
3836

@@ -265,13 +263,7 @@ namespace Ogre {
265263
// Case window resized.
266264
if (width != mWidth || height != mHeight)
267265
{
268-
mWidth = rc.right - rc.left;
269-
mHeight = rc.bottom - rc.top;
270-
271-
// Notify viewports of resize
272-
ViewportList::iterator it = mViewportList.begin();
273-
while( it != mViewportList.end() )
274-
(*it++).second->_updateDimensions();
266+
RenderWindow::resize(width, height);
275267
}
276268
}
277269

0 commit comments

Comments
 (0)