forked from mirror/openmw-tes3mp
Fix race preview crash (Fixes #1808)
This commit is contained in:
parent
28e61c9834
commit
94c2517d67
3 changed files with 18 additions and 6 deletions
|
@ -32,7 +32,6 @@ namespace MWGui
|
||||||
, mHairIndex(0)
|
, mHairIndex(0)
|
||||||
, mCurrentAngle(0)
|
, mCurrentAngle(0)
|
||||||
, mPreviewDirty(true)
|
, mPreviewDirty(true)
|
||||||
, mPreview(NULL)
|
|
||||||
{
|
{
|
||||||
// Centre dialog
|
// Centre dialog
|
||||||
center();
|
center();
|
||||||
|
@ -115,7 +114,14 @@ namespace MWGui
|
||||||
updateSkills();
|
updateSkills();
|
||||||
updateSpellPowers();
|
updateSpellPowers();
|
||||||
|
|
||||||
mPreview = new MWRender::RaceSelectionPreview();
|
mPreview.reset(NULL);
|
||||||
|
|
||||||
|
mPreviewImage->setImageTexture("");
|
||||||
|
|
||||||
|
const std::string textureName = "CharacterHeadPreview";
|
||||||
|
MyGUI::RenderManager::getInstance().destroyTexture(MyGUI::RenderManager::getInstance().getTexture(textureName));
|
||||||
|
|
||||||
|
mPreview.reset(new MWRender::RaceSelectionPreview());
|
||||||
mPreview->setup();
|
mPreview->setup();
|
||||||
mPreview->update (0);
|
mPreview->update (0);
|
||||||
|
|
||||||
|
@ -129,7 +135,7 @@ namespace MWGui
|
||||||
index = proto.mHair.substr(proto.mHair.size() - 2, 2);
|
index = proto.mHair.substr(proto.mHair.size() - 2, 2);
|
||||||
mHairIndex = boost::lexical_cast<int>(index) - 1;
|
mHairIndex = boost::lexical_cast<int>(index) - 1;
|
||||||
|
|
||||||
mPreviewImage->setImageTexture ("CharacterHeadPreview");
|
mPreviewImage->setImageTexture (textureName);
|
||||||
|
|
||||||
mPreviewDirty = true;
|
mPreviewDirty = true;
|
||||||
}
|
}
|
||||||
|
@ -157,8 +163,7 @@ namespace MWGui
|
||||||
|
|
||||||
void RaceDialog::close()
|
void RaceDialog::close()
|
||||||
{
|
{
|
||||||
delete mPreview;
|
mPreview.reset(NULL);
|
||||||
mPreview = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
@ -306,6 +311,10 @@ namespace MWGui
|
||||||
|
|
||||||
void RaceDialog::doRenderUpdate()
|
void RaceDialog::doRenderUpdate()
|
||||||
{
|
{
|
||||||
|
if (!mPreview.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
mPreview->onFrame();
|
||||||
if (mPreviewDirty)
|
if (mPreviewDirty)
|
||||||
{
|
{
|
||||||
mPreview->render();
|
mPreview->render();
|
||||||
|
|
|
@ -100,7 +100,7 @@ namespace MWGui
|
||||||
|
|
||||||
float mCurrentAngle;
|
float mCurrentAngle;
|
||||||
|
|
||||||
MWRender::RaceSelectionPreview* mPreview;
|
std::auto_ptr<MWRender::RaceSelectionPreview> mPreview;
|
||||||
|
|
||||||
bool mPreviewDirty;
|
bool mPreviewDirty;
|
||||||
};
|
};
|
||||||
|
|
|
@ -298,6 +298,9 @@ namespace MWRender
|
||||||
void RaceSelectionPreview::render()
|
void RaceSelectionPreview::render()
|
||||||
{
|
{
|
||||||
mTexture->load();
|
mTexture->load();
|
||||||
|
|
||||||
|
if (!mRenderTarget)
|
||||||
|
setupRenderTarget();
|
||||||
mRenderTarget->update();
|
mRenderTarget->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue