fix crash when show-buffers is enabled

This commit is contained in:
David Rose 2005-03-28 19:10:25 +00:00
parent 6a28498119
commit 03e766a9ab

View File

@ -859,33 +859,27 @@ end_frame() {
_flip_ready = true; _flip_ready = true;
} }
if (_one_shot) {
// In one-shot mode, we request the GraphicsEngine to delete the // In one-shot mode, we request the GraphicsEngine to delete the
// window after we have rendered a frame. // window after we have rendered a frame.
if (_one_shot) {
// But when show-buffers mode is enabled, we want to keep the
// window around until the user has a chance to see the texture.
// So we don't do most of the following in show-buffers mode.
if (!show_buffers) {
_active = false; _active = false;
_delete_flag = true; _delete_flag = true;
// We have to be sure to remove all of the display regions // We have to be sure to remove all of the display regions
// immediately, so that circular reference counts can be cleared // immediately, so that circular reference counts can be cleared
// up (each display region keeps a pointer to a CullResult, which // up (each display region keeps a pointer to a CullResult,
// can hold all sorts of pointers). // which can hold all sorts of pointers).
remove_all_display_regions(); remove_all_display_regions();
// If we were rendering directly to texture, we can't delete the // If we were rendering directly to texture, we can't delete the
// buffer until the texture is gone too. // buffer until the texture is gone too.
if (_rtm_mode == RTM_bind_texture) { if (_rtm_mode == RTM_bind_texture) {
_hold_texture = _texture; _hold_texture = _texture;
} }
// Also, when show-buffers mode is enabled, we want to keep the
// window around until the user has a chance to see the texture.
// Same story: we'll hold it until the texture is gone. In this
// case we also keep the active flag true, so the window will
// repaint when needed.
if (show_buffers) {
_hold_texture = _texture;
_active = true;
} }
// We have to be sure to clear the _texture pointer, though, or // We have to be sure to clear the _texture pointer, though, or