X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fpreview.cpp;h=d681d3e6e9d5ecaab5fb65958806363577812267;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=f0d56e18cd2f4792d000c2ffb98e45410342e50b;hpb=37600b4b217caa5e316984ec0b035c5e8f9698af;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/preview.cpp b/synfig-studio/trunk/src/gtkmm/preview.cpp index f0d56e1..d681d3e 100644 --- a/synfig-studio/trunk/src/gtkmm/preview.cpp +++ b/synfig-studio/trunk/src/gtkmm/preview.cpp @@ -41,6 +41,9 @@ #include #include "asyncrenderer.h" + +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -256,7 +259,7 @@ void studio::Preview::frame_finish(const Preview_Target *targ) if(!buffer) return; - //convert all the pixles to the pixbuf... buffer... thing... + //convert all the pixels to the pixbuf... buffer... thing... //synfig::warning("Converting..."); convert_color_format(buffer, surf[0], surf.get_w()*surf.get_h(), pf, App::gamma); @@ -346,19 +349,19 @@ playing(false) hbox = manage(new Gtk::HBox); button = &b_loop; - IMAGIFY_BUTTON(button,Gtk::Stock::REFRESH,"Toggle Looping"); + IMAGIFY_BUTTON(button,Gtk::Stock::REFRESH,_("Toggle Looping")); hbox->pack_start(b_loop,Gtk::PACK_SHRINK,0); //attach(b_loop,0,1,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); button = manage(new Gtk::Button(/*_("Play")*/)); button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::play)); - IMAGIFY_BUTTON(button,Gtk::Stock::GO_FORWARD,"Play"); + IMAGIFY_BUTTON(button,Gtk::Stock::GO_FORWARD,_("Play")); hbox->pack_start(*button,Gtk::PACK_SHRINK,0); //attach(*button,1,2,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); button = manage(new Gtk::Button(/*_("Stop")*/)); button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::stop)); - IMAGIFY_BUTTON(button,Gtk::Stock::NO,"Stop"); + IMAGIFY_BUTTON(button,Gtk::Stock::NO,_("Stop")); hbox->pack_start(*button,Gtk::PACK_SHRINK,0); //attach(*button,2,3,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); @@ -370,19 +373,19 @@ playing(false) button = manage(new Gtk::Button(/*_("Halt Render")*/)); button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::stoprender)); - IMAGIFY_BUTTON(button,Gtk::Stock::STOP,"Halt Render"); + IMAGIFY_BUTTON(button,Gtk::Stock::STOP,_("Halt Render")); hbox->pack_start(*button,Gtk::PACK_SHRINK,0); //attach(*button,2,3,3,4,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); button = manage(new Gtk::Button(/*_("Re-Preview")*/)); button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::repreview)); - IMAGIFY_BUTTON(button,Gtk::Stock::CONVERT,"Re-Preview"); + IMAGIFY_BUTTON(button,Gtk::Stock::CONVERT,_("Re-Preview")); hbox->pack_start(*button,Gtk::PACK_SHRINK,0); //attach(*button,0,2,4,5,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); button = manage(new Gtk::Button(/*_("Erase All")*/)); button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::eraseall)); - IMAGIFY_BUTTON(button,Gtk::Stock::DELETE,"Erase All"); + IMAGIFY_BUTTON(button,Gtk::Stock::DELETE,_("Erase All")); hbox->pack_start(*button,Gtk::PACK_SHRINK,0); //attach(*button,2,3,4,5,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK); @@ -392,10 +395,10 @@ playing(false) //3rd row hbox = manage(new Gtk::HBox); { - Gtk::Label *label = manage(new Gtk::Label("Last Rendered: ")); + Gtk::Label *label = manage(new Gtk::Label(_("Last Rendered: "))); //label->show(); hbox->pack_start(*label,Gtk::PACK_SHRINK,10); - //attach(*manage(new Gtk::Label("Last Rendered: ")),0,1,3,4,Gtk::SHRINK,Gtk::SHRINK); + //attach(*manage(new Gtk::Label(_("Last Rendered: "))),0,1,3,4,Gtk::SHRINK,Gtk::SHRINK); } //l_lasttime.show(); hbox->pack_start(l_lasttime,Gtk::PACK_SHRINK,0); @@ -698,7 +701,7 @@ void studio::Widget_Preview::disconnect_preview(Preview *prev) } } -void studio::Widget_Preview::set_preview(handle prev) +void studio::Widget_Preview::set_preview(etl::handle prev) { preview = prev; @@ -860,7 +863,16 @@ void studio::Widget_Preview::stoprender() { if(preview) { - preview->renderer.detach(); + // don't crash if the render has already been stopped + if (!preview->renderer) + return; + +#ifdef SINGLE_THREADED + if (preview->renderer->updating) + preview->renderer->stop(); + else +#endif + preview->renderer.detach(); } }