Skip to content

Commit 4a1b146

Browse files
committed
This might actually work. Move clean up code to closeEvent
1 parent 31e8987 commit 4a1b146

File tree

5 files changed

+24
-13
lines changed

5 files changed

+24
-13
lines changed

src/Externals/spire/es-render/FBOMan.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,21 @@ namespace ren {
181181
{
182182
auto contFBO = core.getOrCreateComponentContainer<ren::FBO>();
183183
auto component = contFBO->getComponent(getEntityIDForName(assetName));
184-
if (!component.first || hasFBO(assetName) == 0)
184+
if (!component.first)
185185
{
186186
return createFBO(core, ttype, npixelx, npixely, npixelz, assetName);
187187
}
188188
else
189189
{
190190
FBOData fboData = getFBOData(assetName);
191191
if (fboData.numPixelsX == npixelx && fboData.numPixelsY == npixely)
192+
{
192193
return component.first->glid;
194+
}
193195
else
196+
{
194197
return resizeFBO(core, assetName, npixelx, npixely, npixelz);
198+
}
195199
}
196200
}
197201

src/Interface/Modules/Render/ES/RendererInterface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ namespace SCIRun
8181
virtual void setMouseMode(MouseMode mode) = 0;
8282
virtual void eventResize(size_t width, size_t height) = 0;
8383
virtual void doFrame(double constantDeltaTime) = 0;
84+
virtual void cleanupSelect() = 0;
8485
};
8586

8687
class SCISHARE RendererModuleInterface

src/Interface/Modules/Render/ES/SRInterface.cc

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,15 +216,6 @@ void SRInterface::runGCOnNextExecution()
216216
void SRInterface::widgetMouseUp()
217217
{
218218
widgetUpdater_.reset();
219-
{
220-
std::weak_ptr<ren::FBOMan> fm = mCore.getStaticComponent<ren::StaticFBOMan>()->instance_;
221-
std::shared_ptr<ren::FBOMan> fboMan = fm.lock();
222-
if (fboMan && widgetSelectFboId_)
223-
{
224-
fboMan->removeInMemoryFBO(*widgetSelectFboId_);
225-
widgetSelectFboId_ = boost::none;
226-
}
227-
}
228219
}
229220

230221
//----------------------------------------------------------------------------------------------
@@ -269,6 +260,20 @@ void SRInterface::runGCOnNextExecution()
269260
//---------------- Camera ----------------------------------------------------------------------
270261
//----------------------------------------------------------------------------------------------
271262

263+
void SRInterface::cleanupSelect()
264+
{
265+
if (widgetSelectFboId_)
266+
{
267+
std::weak_ptr<ren::FBOMan> fm = mCore.getStaticComponent<ren::StaticFBOMan>()->instance_;
268+
std::shared_ptr<ren::FBOMan> fboMan = fm.lock();
269+
if (fboMan)
270+
{
271+
fboMan->removeInMemoryFBO(*widgetSelectFboId_);
272+
widgetSelectFboId_ = boost::none;
273+
}
274+
}
275+
}
276+
272277
//----------------------------------------------------------------------------------------------
273278
void SRInterface::eventResize(size_t width, size_t height)
274279
{

src/Interface/Modules/Render/ES/SRInterface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ namespace SCIRun
146146
// Garbage collect all invalid objects not given in the valid objects vector.
147147
void gcInvalidObjects(const std::vector<std::string>& validObjects) override;
148148
Core::Geometry::BBox getSceneBox() override {return mSceneBBox;}
149+
void cleanupSelect() override;
149150

150151
bool hasShaderPromise() const override;
151152
void runGCOnNextExecution() override;

src/Interface/Modules/Render/GLWidget.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,14 @@ void GLWidget::resizeGL(int width, int height)
134134
makeCurrent();
135135
graphics_->eventResize(static_cast<size_t>(width),
136136
static_cast<size_t>(height));
137-
//updateRenderer();
138137
}
139138

140139
//------------------------------------------------------------------------------
141140
void GLWidget::closeEvent(QCloseEvent *evt)
142141
{
143-
if (graphics_ != nullptr)
142+
if (graphics_)
144143
{
144+
graphics_->cleanupSelect();
145145
graphics_.reset();
146146
}
147147
QOpenGLWidget::closeEvent(evt);
@@ -150,7 +150,7 @@ void GLWidget::closeEvent(QCloseEvent *evt)
150150
//------------------------------------------------------------------------------
151151
void GLWidget::updateRenderer()
152152
{
153-
if(isValid())
153+
if (isValid())
154154
{
155155
update();
156156
}

0 commit comments

Comments
 (0)