comparison Framework/Viewport/SdlViewport.cpp @ 1391:32272ecfc6c2

Drilled a hole through the abstractions to be able to match an SdlViewport with its SDL window ID to support dispatching event loop SDL events as viewport/controller/compositor method calls.
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 28 Apr 2020 13:26:41 +0200
parents be614695747d
children 30deba7bc8e2
comparison
equal deleted inserted replaced
1390:57e06087d357 1391:32272ecfc6c2
93 boost::shared_ptr<SdlOpenGLViewport>(new SdlOpenGLViewport(title, width, height, allowDpiScaling)); 93 boost::shared_ptr<SdlOpenGLViewport>(new SdlOpenGLViewport(title, width, height, allowDpiScaling));
94 that->SdlViewport::PostConstructor(); 94 that->SdlViewport::PostConstructor();
95 return that; 95 return that;
96 } 96 }
97 97
98 uint32_t SdlOpenGLViewport::GetSdlWindowId()
99 {
100 SdlWindow& sdlWindowWrapper = context_.GetWindow();
101 SDL_Window* sdlWindow = sdlWindowWrapper.GetObject();
102 Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
103 return sdlWindowId;
104 }
105
98 SdlOpenGLViewport::~SdlOpenGLViewport() 106 SdlOpenGLViewport::~SdlOpenGLViewport()
99 { 107 {
100 // Make sure that the "OpenGLCompositor" is destroyed BEFORE the 108 // Make sure that the "OpenGLCompositor" is destroyed BEFORE the
101 // "OpenGLContext" it references (*) 109 // "OpenGLContext" it references (*)
102 ClearCompositor(); 110 ClearCompositor();
144 { 152 {
145 SDL_FreeSurface(sdlSurface_); 153 SDL_FreeSurface(sdlSurface_);
146 } 154 }
147 } 155 }
148 156
157 uint32_t SdlCairoViewport::GetSdlWindowId()
158 {
159 SDL_Window* sdlWindow = window_.GetObject();
160 Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
161 return sdlWindowId;
162 }
163
149 void SdlCairoViewport::Paint() 164 void SdlCairoViewport::Paint()
150 { 165 {
151 SdlLock lock(*this); 166 SdlLock lock(*this);
152 167
153 lock.GetCompositor().Refresh(lock.GetController().GetScene()); 168 lock.GetCompositor().Refresh(lock.GetController().GetScene());