mirror of https://github.com/axmolengine/axmol.git
Merge pull request #10985 from dabingnn/v3_fixRenderTextureCrash
fix crash problem when switch to a new scene after call RenderTexture::s...
This commit is contained in:
commit
f3e518b103
|
@ -107,6 +107,9 @@ public:
|
||||||
|
|
||||||
/** saves the texture into a file. The format could be JPG or PNG. The file will be saved in the Documents folder.
|
/** saves the texture into a file. The format could be JPG or PNG. The file will be saved in the Documents folder.
|
||||||
Returns true if the operation is successful.
|
Returns true if the operation is successful.
|
||||||
|
Notes: since v3.x, saveToFile will generate a custum command, which will be called in the following render->render().
|
||||||
|
So if this function is called in a event handler, the actual save file will be called in the next frame. If we switch to a different scene, the game will crash.
|
||||||
|
To solve this, add Director::getInstance()->getRenderer()->render(); after this function.
|
||||||
*/
|
*/
|
||||||
bool saveToFile(const std::string& filename, Image::Format format, bool isRGBA = true, std::function<void (RenderTexture*, const std::string&)> callback = nullptr);
|
bool saveToFile(const std::string& filename, Image::Format format, bool isRGBA = true, std::function<void (RenderTexture*, const std::string&)> callback = nullptr);
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,8 @@ void RenderTextureSave::saveImage(cocos2d::Ref *sender)
|
||||||
};
|
};
|
||||||
|
|
||||||
_target->saveToFile(png, Image::Format::PNG, true, callback);
|
_target->saveToFile(png, Image::Format::PNG, true, callback);
|
||||||
|
//Add this function to avoid crash if we switch to a new scene.
|
||||||
|
Director::getInstance()->getRenderer()->render();
|
||||||
CCLOG("Image saved %s", png);
|
CCLOG("Image saved %s", png);
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
|
|
Loading…
Reference in New Issue