summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2010-12-06 08:21:18 +0000
committerJon A. Cruz <jon@joncruz.org>2010-12-06 08:21:18 +0000
commit75684fbe34e2f04c36f9e5ad7e7931286e755d38 (patch)
tree3efa386abfb1817e94e305fdcd353d0313d29d65 /src/widgets
parentRestore copies of renamed icons on certain gtk versions. Fixes bug #651678. (diff)
downloadinkscape-75684fbe34e2f04c36f9e5ad7e7931286e755d38.tar.gz
inkscape-75684fbe34e2f04c36f9e5ad7e7931286e755d38.zip
Stop background rendering once crash handler is triggered.
(bzr r9940)
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/icon.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp
index f9d01113e..c25e6aac2 100644
--- a/src/widgets/icon.cpp
+++ b/src/widgets/icon.cpp
@@ -219,7 +219,7 @@ void sp_icon_fetch_pixbuf( SPIcon *icon )
}
}
-static GdkPixbuf* renderup( gchar const* name, Inkscape::IconSize lsize, unsigned psize ) {
+GdkPixbuf* renderup( gchar const* name, Inkscape::IconSize lsize, unsigned psize ) {
GtkIconTheme *theme = gtk_icon_theme_get_default();
GdkPixbuf *pb = 0;
@@ -1184,7 +1184,8 @@ void Inkscape::queueIconPrerender( Glib::ustring const &name, Inkscape::IconSize
{
GtkStockItem stock;
gboolean stockFound = gtk_stock_lookup( name.c_str(), &stock );
- if (!stockFound && !gtk_icon_theme_has_icon(gtk_icon_theme_get_default(), name.c_str()) ) {
+ gboolean themedFound = gtk_icon_theme_has_icon(gtk_icon_theme_get_default(), name.c_str());
+ if (!stockFound && !themedFound ) {
gint trySize = CLAMP( static_cast<gint>(lsize), 0, static_cast<gint>(G_N_ELEMENTS(iconSizeLookup) - 1) );
if ( !sizeMapDone ) {
injectCustomSize();
@@ -1349,7 +1350,9 @@ static void addPreRender( GtkIconSize lsize, gchar const *name )
}
gboolean icon_prerender_task(gpointer /*data*/) {
- if (!pendingRenders.empty()) {
+ if ( inkscapeIsCrashing() ) {
+ // stop
+ } else if (!pendingRenders.empty()) {
bool workDone = false;
do {
preRenderItem single = pendingRenders.front();
@@ -1359,7 +1362,7 @@ gboolean icon_prerender_task(gpointer /*data*/) {
} while (!pendingRenders.empty() && !workDone);
}
- if (!pendingRenders.empty()) {
+ if (!inkscapeIsCrashing() && !pendingRenders.empty()) {
return TRUE;
} else {
callbackHooked = false;