[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/kolf-ng
From:       Huan Zeng <zh.issac () gmail ! com>
Date:       2009-08-16 15:40:07
Message-ID: 1250437207.413828.21574.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1011998 by hzeng:

*move blending to background thread.
*issue:a crash happened after using fill button and then switch to blender tab, will fix it later.


 M  +1 -0      CMakeLists.txt  
 M  +12 -0     editor/blender-manager.cpp  
 M  +6 -0      editor/blender-manager.h  


--- trunk/playground/games/kolf-ng/CMakeLists.txt #1011997:1011998
@@ -14,6 +14,7 @@
 set(kolfng_SRCS
 	3d/renderstatemanager.cpp
 	3d/texturepool.cpp
+	editor/blender-blendthread.cpp
 	editor/blender-configwidget.cpp
 	editor/blender-delegate.cpp
 	editor/blender-imageviewer.cpp
--- trunk/playground/games/kolf-ng/editor/blender-manager.cpp #1011997:1011998
@@ -17,6 +17,7 @@
  ***************************************************************************/
 
 #include "../elements/utils-heightmap.h"
+#include "blender-blendthread.h"
 #include "blender-delegate.h"
 #include "blender-imageviewer.h"
 #include "blender-model.h"
@@ -46,6 +47,7 @@
 	, m_drawingBoard(0)
 	, m_texturesModified(false)
 {
+	m_blendThread = new BlendThread(this, this);
 	m_view->setModel(m_model);
 	m_view->setItemDelegate(m_delegate);
 	m_view->setSelectionBehavior(QAbstractItemView::SelectRows);
@@ -128,6 +130,11 @@
 
 void Kolf::BlenderManager::startBlending()
 {
+	m_blendThread->start();
+}
+
+void Kolf::BlenderManager::processBlending()
+{
 	bool heightmapModified = setHeightmap();
 	if(!m_isConfigurable || (!m_texturesModified && !heightmapModified)
 	   || !m_startBlendingAction->isEnabled())
@@ -161,8 +168,13 @@
 
 	m_texturesModified = false;
 	m_isConfigurable = true;
+}
+
+void Kolf::BlenderManager::blendingFinished()
+{
 	//changeBrightness() will make the blending result shown on the image viewer.
 	changeBrightness(0);
+	m_blendThread->terminate();
 }
 
 bool Kolf::BlenderManager::setHeightmap()
--- trunk/playground/games/kolf-ng/editor/blender-manager.h #1011997:1011998
@@ -26,6 +26,7 @@
 class QListView;
 namespace Kolf
 {
+	class BlendThread;
 	class DrawingBoard;
 	class ImageViewer;
 	class TextureListModel;
@@ -56,12 +57,16 @@
 			void delTextures();
 			void loadDefaultTextureSet();
 			void startBlending();
+			void processBlending();
+			void blendingFinished();
 			void showHeightmap();
 			void changeBrightness(int value);
 			void setOutputWidth(int width);
 			void setOutputHeight(int height);
 			void saveResult();
 
+		friend class BlendThread;
+
 		private:
 			TextureListModel* m_model;
 			TextureListDelegate* m_delegate;
@@ -77,6 +82,7 @@
 			KAction* m_startBlendingAction;
 			DrawingBoard* m_drawingBoard;
 			bool m_texturesModified;
+			BlendThread* m_blendThread;
 	};
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic