changeset 23136:2165993aed7d

Lock the graphics mutex before manipulating text_renderer objects (bug #50189) * graphics.cc: instantiate an auto_lock object before every call to text_renderer methods
author Pantxo Diribarne <pantxo.diribarne@gmail.com>
date Wed, 01 Feb 2017 22:22:19 +0100
parents be2654b2f34f
children 334119c390b3
files libinterp/corefcn/graphics.cc
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc	Wed Feb 01 21:06:37 2017 -0800
+++ b/libinterp/corefcn/graphics.cc	Wed Feb 01 22:22:19 2017 +0100
@@ -6459,6 +6459,7 @@
 
     }
 
+  gh_manager::auto_lock guard;
   txt_renderer.set_font (get ("fontname").string_value (),
                          get ("fontweight").string_value (),
                          get ("fontangle").string_value (),
@@ -7349,6 +7350,7 @@
 
           if (txt_renderer.ok ())
             {
+              gh_manager::auto_lock guard;
               ext = txt_renderer.get_extent (label, 0.0,
                                              get_ticklabelinterpreter ());
 
@@ -8318,6 +8320,7 @@
 void
 text::properties::update_font (void)
 {
+  gh_manager::auto_lock guard;
   txt_renderer.set_font (get ("fontname").string_value (),
                          get ("fontweight").string_value (),
                          get ("fontangle").string_value (),
@@ -8354,6 +8357,7 @@
 
   string_vector sv = string_prop.string_vector_value ();
 
+  gh_manager::auto_lock guard;
   txt_renderer.text_to_pixels (sv.join ("\n"), pixels, bbox,
                                halign, valign, get_rotation (),
                                get_interpreter ());
@@ -9050,6 +9054,7 @@
 
   elt = text_parser::parse (get_string_string (), "none");
 
+  gh_manager::auto_lock guard;
   txt_renderer.set_font (get_fontname (), get_fontweight (),
                          get_fontangle (), get_fontsize ());