X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fpreview.cpp;h=d681d3e6e9d5ecaab5fb65958806363577812267;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=ce8424f7421a1c3eb24bc09af1501a04a7baa178;hpb=c3ad95144d148602f672e95ddda1f18fc35502f8;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/preview.cpp b/synfig-studio/trunk/src/gtkmm/preview.cpp index ce8424f..d681d3e 100644 --- a/synfig-studio/trunk/src/gtkmm/preview.cpp +++ b/synfig-studio/trunk/src/gtkmm/preview.cpp @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -40,6 +41,9 @@ #include #include "asyncrenderer.h" + +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -255,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); @@ -345,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); @@ -369,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); @@ -391,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); @@ -697,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; @@ -859,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(); } }