Mercurial > hg > octave-nkf
changeset 20163:b6061813a693
always obtain gh_manager lock before accessing graphics objects
* Canvas.cc (Canvas::print, Canvas::updateCurrentPoint): Use
gh_manager::auto_lock before accessing object.
* Container.cc (Container::canvas): Likewise.
* ContextMenu.cc (ContextMenu::executeAt): Likewise.
* Figure.cc (hasUiControlChildren, hasUiMenuChildren): Likewise.
* GLCanvas.cc (GLCanvas::draw): Likewise.
* Object.cc (Object::objectDestroyed): Likewise.
* __init_qt__.cc (__init__, __shutdown__): Likewise.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 17 Mar 2015 20:16:16 -0400 |
parents | ed51e17f6ccf |
children | b57b7f3f5e61 |
files | libgui/graphics/Canvas.cc libgui/graphics/Container.cc libgui/graphics/ContextMenu.cc libgui/graphics/Figure.cc libgui/graphics/GLCanvas.cc libgui/graphics/Object.cc libgui/graphics/__init_qt__.cc |
diffstat | 7 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/graphics/Canvas.cc +++ b/libgui/graphics/Canvas.cc @@ -91,6 +91,7 @@ void Canvas::print (const QString& file_cmd, const QString& term) { + gh_manager::auto_lock lock; graphics_object obj = gh_manager::get_object (m_handle); if (obj.valid_object ()) @@ -104,6 +105,8 @@ void Canvas::updateCurrentPoint(const graphics_object& fig, const graphics_object& obj, QMouseEvent* event) { + gh_manager::auto_lock lock; + gh_manager::post_set (fig.get_handle (), "currentpoint", Utils::figureCurrentPoint (fig, event), false);
--- a/libgui/graphics/Container.cc +++ b/libgui/graphics/Container.cc @@ -51,6 +51,7 @@ { if (! m_canvas && xcreate) { + gh_manager::auto_lock lock; graphics_object go = gh_manager::get_object (gh); if (go)
--- a/libgui/graphics/ContextMenu.cc +++ b/libgui/graphics/ContextMenu.cc @@ -111,6 +111,7 @@ if (h.ok ()) { + gh_manager::auto_lock lock; graphics_object go = gh_manager::get_object (h); if (go.valid_object ())
--- a/libgui/graphics/Figure.cc +++ b/libgui/graphics/Figure.cc @@ -60,6 +60,8 @@ static bool hasUiControlChildren (const figure::properties& fp) { + gh_manager::auto_lock lock; + Matrix kids = fp.get_all_children (); for (int i = 0; i < kids.numel (); i++) @@ -76,6 +78,8 @@ static bool hasUiMenuChildren (const figure::properties& fp) { + gh_manager::auto_lock lock; + Matrix kids = fp.get_all_children (); for (int i = 0; i < kids.numel (); i++)
--- a/libgui/graphics/GLCanvas.cc +++ b/libgui/graphics/GLCanvas.cc @@ -49,6 +49,7 @@ void GLCanvas::draw (const graphics_handle& gh) { + gh_manager::auto_lock lock; graphics_object go = gh_manager::get_object (gh); if (go)
--- a/libgui/graphics/Object.cc +++ b/libgui/graphics/Object.cc @@ -156,6 +156,8 @@ Object* Object::parentObject (const graphics_object& go) { + gh_manager::auto_lock lock; + Object* parent = Backend::toolkitObject (gh_manager::get_object (go.get_parent ()));
--- a/libgui/graphics/__init_qt__.cc +++ b/libgui/graphics/__init_qt__.cc @@ -49,6 +49,8 @@ { if (qApp) { + gh_manager::auto_lock lock; + qRegisterMetaType<graphics_object> ("graphics_object"); gh_manager::enable_event_processing (true); @@ -96,6 +98,8 @@ { if (qtHandlesInitialized) { + gh_manager::auto_lock lock; + octave_add_atexit_function ("__shutdown_qt__"); gtk_manager::unload_toolkit ("qt");