gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot/window.cpp
diff options
context:
space:
mode:
authorfrancesco <francesco.bbt@gmail.com>2011年01月04日 00:08:50 +0100
committerfrancesco <francesco.bbt@gmail.com>2011年01月04日 00:08:50 +0100
commite1075953dc2b86704dc3204d4523caa85cb71a56 (patch)
treef1c76561963b277652d9263f510ed316d3736863 /agg-plot/window.cpp
parent3cda0d445e3b6eee327b9552a282a17c4fbc0cd0 (diff)
downloadgsl-shell-e1075953dc2b86704dc3204d4523caa85cb71a56.tar.gz
added checks in window methods to avoid drawing when window is closed
Diffstat (limited to 'agg-plot/window.cpp')
-rw-r--r--agg-plot/window.cpp 25
1 files changed, 17 insertions, 8 deletions
diff --git a/agg-plot/window.cpp b/agg-plot/window.cpp
index 32ff234d..f6ded335 100644
--- a/agg-plot/window.cpp
+++ b/agg-plot/window.cpp
@@ -487,15 +487,20 @@ window_split (lua_State *L)
win->lock();
win->cleanup_refs(L, 1);
- if (!win->split(spec))
+
+ if (! win->split(spec))
{
- win->do_window_update();
+ if (win->status == canvas_window::running)
+ win->do_window_update();
win->unlock();
return luaL_error(L, window::error_message(window::invalid_split_string));
}
- win->on_draw();
- win->do_window_update();
+ if (win->status == canvas_window::running)
+ {
+ win->on_draw();
+ win->do_window_update();
+ }
win->unlock();
return 0;
@@ -514,7 +519,8 @@ window_attach (lua_State *L)
if (slot_id >= 0)
{
- win->draw_slot(slot_id, true);
+ if (win->status == canvas_window::running)
+ win->draw_slot(slot_id, true);
win->unlock();
object_refs_add (L, table_window_plot, slot_id, 1, 2);
}
@@ -544,9 +550,12 @@ window_update (lua_State *L)
{
window *win = object_check<window>(L, 1, GS_WINDOW);
- win->lock();
- win->on_draw();
- win->do_window_update();
+ win->lock();
+ if (win->status == canvas_window::running)
+ {
+ win->on_draw();
+ win->do_window_update();
+ }
win->unlock();
return 0;
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月13日 06:45:57 +0000

AltStyle によって変換されたページ (->オリジナル) /