mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-21 11:09:41 +00:00
Workaround per-frame resources leak in MyGUI. New vertex buffers were being created every frame.
This commit is contained in:
parent
e458cf1df2
commit
8114f48469
2 changed files with 32 additions and 2 deletions
|
@ -33,12 +33,26 @@ namespace MWGui
|
||||||
|
|
||||||
void ItemWidget::setIcon(const std::string &icon)
|
void ItemWidget::setIcon(const std::string &icon)
|
||||||
{
|
{
|
||||||
|
// HACK HACK HACK: Don't setImageTexture if it hasn't changed.
|
||||||
|
// There is a leak in MyGUI for each setImageTexture on the same widget.
|
||||||
|
// http://www.ogre3d.org/addonforums/viewtopic.php?f=17&t=30251
|
||||||
|
if (mCurrentItemTexture == icon)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mCurrentItemTexture = icon;
|
||||||
if (mItem)
|
if (mItem)
|
||||||
mItem->setImageTexture(icon);
|
mItem->setImageTexture(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemWidget::setFrame(const std::string &frame, const MyGUI::IntCoord &coord)
|
void ItemWidget::setFrame(const std::string &frame, const MyGUI::IntCoord &coord)
|
||||||
{
|
{
|
||||||
|
// HACK HACK HACK: Don't setImageTexture if it hasn't changed.
|
||||||
|
// There is a leak in MyGUI for each setImageTexture on the same widget.
|
||||||
|
// http://www.ogre3d.org/addonforums/viewtopic.php?f=17&t=30251
|
||||||
|
if (mCurrentFrameTexture == frame)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mCurrentFrameTexture = frame;
|
||||||
if (mFrame)
|
if (mFrame)
|
||||||
{
|
{
|
||||||
mFrame->setImageTexture(frame);
|
mFrame->setImageTexture(frame);
|
||||||
|
@ -69,8 +83,21 @@ namespace MWGui
|
||||||
if (ptr.isEmpty())
|
if (ptr.isEmpty())
|
||||||
{
|
{
|
||||||
if (mFrame)
|
if (mFrame)
|
||||||
mFrame->setImageTexture("");
|
{
|
||||||
mItem->setImageTexture("");
|
// HACK HACK HACK: Don't setImageTexture if it hasn't changed.
|
||||||
|
// There is a leak in MyGUI for each setImageTexture on the same widget.
|
||||||
|
// http://www.ogre3d.org/addonforums/viewtopic.php?f=17&t=30251
|
||||||
|
if (!mCurrentFrameTexture.empty())
|
||||||
|
{
|
||||||
|
mFrame->setImageTexture("");
|
||||||
|
mCurrentFrameTexture = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!mCurrentItemTexture.empty())
|
||||||
|
{
|
||||||
|
mCurrentItemTexture = "";
|
||||||
|
mItem->setImageTexture("");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,9 @@ namespace MWGui
|
||||||
|
|
||||||
MyGUI::ImageBox* mItem;
|
MyGUI::ImageBox* mItem;
|
||||||
MyGUI::ImageBox* mFrame;
|
MyGUI::ImageBox* mFrame;
|
||||||
|
|
||||||
|
std::string mCurrentItemTexture;
|
||||||
|
std::string mCurrentFrameTexture;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue