[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bcalligra=5D_/=3A_fix_crash_on_deleting_brush?=
From: Sven Langkamp <sven.langkamp () gmail ! com>
Date: 2011-03-01 2:16:26
Message-ID: 20110301021626.CF150A60C9 () git ! kde ! org
[Download RAW message or body]
Git commit 2a0dad6b91ab1c38d221fdfdeb158c015b46ad77 by Sven Langkamp.
Committed on 01/03/2011 at 03:15.
Pushed by langkamp into branch 'master'.
fix crash on deleting brush
BUG:267320
M +2 -2 krita/plugins/paintops/libbrush/kis_brush_server.cpp
M +1 -1 krita/plugins/paintops/libpaintop/kis_custom_brush_widget.cpp
M +8 -6 libs/widgets/KoResourceServer.h
http://commits.kde.org/calligra/2a0dad6b91ab1c38d221fdfdeb158c015b46ad77
diff --git a/krita/plugins/paintops/libbrush/kis_brush_server.cpp \
b/krita/plugins/paintops/libbrush/kis_brush_server.cpp index da47696..6676085 100644
--- a/krita/plugins/paintops/libbrush/kis_brush_server.cpp
+++ b/krita/plugins/paintops/libbrush/kis_brush_server.cpp
@@ -41,14 +41,14 @@ class BrushResourceServer : public KoResourceServer<KisBrush>, \
public KoResource
public:
- BrushResourceServer() : KoResourceServer<KisBrush>("kis_brushes", \
"*.gbr:*.gih:*.abr:*.png:*.svg") { + BrushResourceServer() : \
KoResourceServer<KisBrush>("kis_brushes", "*.gbr:*.gih:*.abr:*.png:*.svg", false) { \
addObserver(this, true); }
~BrushResourceServer() {
foreach(KisBrush* brush, m_brushes)
{
- removeResourceFromServer(brush, false);
+ removeResourceFromServer(brush);
}
}
diff --git a/krita/plugins/paintops/libpaintop/kis_custom_brush_widget.cpp \
b/krita/plugins/paintops/libpaintop/kis_custom_brush_widget.cpp index \
40f6db9..7562409 100644
--- a/krita/plugins/paintops/libpaintop/kis_custom_brush_widget.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_custom_brush_widget.cpp
@@ -170,7 +170,7 @@ void KisCustomBrushWidget::createBrush()
if (m_brush){
// don't delete shared pointer, please
- bool removedCorrectly = \
KisBrushServer::instance()->brushServer()->removeResourceFromServer( m_brush.data(), \
false ); + bool removedCorrectly = \
KisBrushServer::instance()->brushServer()->removeResourceFromServer( m_brush.data() \
); if (!removedCorrectly){
kWarning() << "Brush was not removed correctly for the resource server";
}
diff --git a/libs/widgets/KoResourceServer.h b/libs/widgets/KoResourceServer.h
index 9afd88c..aa1e520 100644
--- a/libs/widgets/KoResourceServer.h
+++ b/libs/widgets/KoResourceServer.h
@@ -92,9 +92,9 @@ protected:
template <class T> class KoResourceServer : public KoResourceServerBase {
public:
- KoResourceServer(const QString& type, const QString& extensions)
+ KoResourceServer(const QString& type, const QString& extensions, bool \
deleteResource = true) : KoResourceServerBase(type, extensions)
-
+ , m_deleteResource(deleteResource)
{
}
@@ -182,8 +182,7 @@ public:
}
/// Remove a resource from Resource Server but not from a file
- /// if deleteResource is true. the resource will be deleted by resource server
- bool removeResourceFromServer(T* resource, bool deleteResource = true){
+ bool removeResourceFromServer(T* resource){
if ( !m_resourcesByFilename.contains( resource->shortFilename() ) ) {
return false;
}
@@ -193,7 +192,7 @@ public:
m_resources.removeAt(m_resources.indexOf(resource));
notifyRemovingResource(resource);
- if (deleteResource) {
+ if (m_deleteResource) {
delete resource;
}
@@ -226,7 +225,9 @@ public:
m_resourcesByFilename.remove(resource->shortFilename());
m_resources.removeAt(m_resources.indexOf(resource));
notifyRemovingResource(resource);
- delete resource;
+ if (m_deleteResource) {
+ delete resource;
+ }
} else {
// TODO: save blacklist to config file and load it again on next start
m_resourceBlackList << resource;
@@ -390,6 +391,7 @@ private:
QList<T*> m_resourceBlackList;
QList<T*> m_resources; ///< list of resources in order of addition
QList<KoResourceServerObserver<T>*> m_observers;
+ bool m_deleteResource;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic