[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58820] branches/soc-2013-vse/source/ blender/sequencer: Cleanup API in seqBucket and seqEngine

Alexander Kuznetsov kuzsasha at gmail.com
Fri Aug 2 08:10:53 CEST 2013


Revision: 58820
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58820
Author:   alexk
Date:     2013-08-02 06:10:53 +0000 (Fri, 02 Aug 2013)
Log Message:
-----------
Cleanup API in seqBucket and seqEngine 

Modified Paths:
--------------
    branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.cpp
    branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.h
    branches/soc-2013-vse/source/blender/sequencer/sequencer_seqEngine.h

Modified: branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.cpp
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.cpp	2013-08-02 06:02:00 UTC (rev 58819)
+++ branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.cpp	2013-08-02 06:10:53 UTC (rev 58820)
@@ -1,11 +1,13 @@
 #include "sequencer_seqBucket.h"
+#include "sequencer_seqFrame.h"
 
 
-seqBucket::seqBucket(void):
-next(NULL),
-prev(NULL),
+void seq_frame_ref_dec(seqEngine *se, seqFrame *frame);
+
+seqBucket::seqBucket(seqEngine *engine):
+	MutexRef(&omutex),
 bid(0),
-refcount(0),
+//refcount(0),
 framep(NULL),
 status(0),
 devreq(0),
@@ -13,10 +15,10 @@
 device_associated(NULL),
 type(0),
 dl(NULL),
-internalImg(0)
+internalImg(0),
+se(engine)
 {
 
-	pthread_mutex_init(&this->bucket_mutex, NULL);
 
 }
 
@@ -48,10 +50,9 @@
 	//if(bucket->ImStack) MEM_freeN(bucket->ImStack);
 	if(dl) delete [] dl;
 
+	framep->Release();
 
 
 
-
-
 }
 

Modified: branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.h
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.h	2013-08-02 06:02:00 UTC (rev 58819)
+++ branches/soc-2013-vse/source/blender/sequencer/sequencer_seqBucket.h	2013-08-02 06:10:53 UTC (rev 58820)
@@ -2,7 +2,7 @@
 #define __SEQUENCER_BUCKET_H__
 
 
-typedef struct seqFrame seqFrame;
+class seqFrame;
 
 
 class seq_CommandBase;
@@ -11,22 +11,17 @@
 class seqOutputImage;
 class seqBucket_deplist;
 class seqFrame;
+class seqDevice;
 
-//CHANGE!!
-typedef union seqDevice seqDevice;
-
 #include <vector>
 
 
-
-#include "MEM_guardedalloc.h"
-
-
-
-
 #include "pthread.h"
 #include "sequencer_main.h"
 #include "sequencer_seqImageStorage.h"
+#include "sequencer_include.h"
+#include "sequencer_seqCommand.h"
+#include "sequencer_MutexRef.h"
 
 class seqBucket_deplist
 {
@@ -52,19 +47,16 @@
 void seq_bucket_ref_dec(seqEngine *se, seqBucket *bucket);
 void seq_bucket_ref_init(seqEngine *se, seqFrame *frm, seqBucket *bucket);
 
-class seqBucket
+class seqBucket : public MutexRef
 {
 
 public:
 
-	seqBucket *next, *prev;
 
-
 	uint bid;
 
 
-	ThreadMutex bucket_mutex;
-	int refcount;
+	smutex omutex;
 
 
 	seqFrame *framep;
@@ -82,13 +74,12 @@
 	size_t dl_num;
 	seqBucket_deplist * dl;
 
+	uint implementation;
 
-//	size_t imagest_num;
-//	seqImageStackInfo *ImStack;
 
 
+	seqEngine *se;
 
-
 	seqImageStorage firstImgOutput;
 
 	seqImageStorage *internalImg;
@@ -100,29 +91,41 @@
 
 
 
-	void Retain(void)
+
+	void init(seqEngine *se, seqFrame *frm)
 	{
-		pthread_mutex_lock(&this->bucket_mutex);
-		this->refcount++;
-		pthread_mutex_unlock(&this->bucket_mutex);
+
+		seq_bucket_ref_init(se, frm, this);
+
 	}
 
-	void Release(void)
+
+	void prepare_done(void)
 	{
-		seq_bucket_ref_dec(0, this);
+		implementation = ~0;
+
+		for(std::vector<seq_CommandBase*>::iterator it = commands_cpp.begin();
+			it!=commands_cpp.end(); ++it )
+		{
+			seq_CommandBase *c = *it;
+			implementation = c->get_implementation() & implementation;
+
+		}
+
+
 	}
 
-	void init(seqEngine *se, seqFrame *frm)
-	{
 
-		seq_bucket_ref_init(se, frm, this);
 
+	unsigned int get_implementation(void)
+	{
+		return implementation;
 	}
 
 
 
-	seqBucket(void);
-	~seqBucket(void);
+	seqBucket(seqEngine *engine);
+	virtual ~seqBucket(void);
 
 
 	MEM_CXX_CLASS_ALLOC_FUNCS("seqBucket");

Modified: branches/soc-2013-vse/source/blender/sequencer/sequencer_seqEngine.h
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/sequencer_seqEngine.h	2013-08-02 06:02:00 UTC (rev 58819)
+++ branches/soc-2013-vse/source/blender/sequencer/sequencer_seqEngine.h	2013-08-02 06:10:53 UTC (rev 58820)
@@ -10,35 +10,43 @@
 }
 #endif
 
+#include <list>
+#include <vector>
+#include "sequencer_seqDevice.h"
+#include "sequencer_include.h"
+
 class seqEngine
 {
-private:
-	void setListBase(ListBase *l)
-	{
-		l->first = l->last = NULL;
-	}
 
 
 
 public:
 	int init;
 
-	ListBase devicelist;
-	ListBase clplatformlist;
+	std::list<seqDevice*>  devicelist;
+	std::vector<seqCLPlatform*>  clplatformlist;
+	std::list<seqBucket*>  list_buckets_todo;
 
-	ListBase list_buckets_todo;
 
+	scond buckets_notifiication;
+	smutex omutex;
 
-	ThreadMutex engine_mutex;
+	seqEngine(void):
+	buckets_notifiication(&omutex)
+	{
 
-	seqEngine(void)
+	}
+
+
+
+	void NotifyBucketChange()
 	{
-		setListBase(&devicelist);
-		setListBase(&clplatformlist);
-		setListBase(&list_buckets_todo);
-		pthread_mutex_init(&engine_mutex, NULL);
+		buckets_notifiication.lock();
+		buckets_notifiication.broadcast();
+		buckets_notifiication.unlock();
 	}
 
+	MEM_CXX_CLASS_ALLOC_FUNCS("seqEngine");
 
 
 };




More information about the Bf-blender-cvs mailing list