[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45485] trunk/blender/source/blender: Fixes for MovieClip strip user counter.

Sergey Sharybin sergey.vfx at gmail.com
Mon Apr 9 10:45:52 CEST 2012


Revision: 45485
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45485
Author:   nazgul
Date:     2012-04-09 08:45:51 +0000 (Mon, 09 Apr 2012)
Log Message:
-----------
Fixes for MovieClip strip user counter.
Currently copies behavior of clip and image editors:
- On file load, all strip will reference clip they're using
- On adding new strip, clip would be referenced only if it've got zero user
- On removing strip clip wouldn't be de-referenced to prevent clip editors
  pointing to zero-counted datablocks.
Not actually ideal from human beings point of view, but referencing/dereferencing
clip on each strip add/delete is getting crappy because of current logic of how
clip datablocks are referenced from clip editor (which is designed to work fine with
loading files without loading UI).

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-04-09 07:06:06 UTC (rev 45484)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-04-09 08:45:51 UTC (rev 45485)
@@ -4841,6 +4841,7 @@
 				}
 				if (seq->clip) {
 					seq->clip = newlibadr(fd, sce->id.lib, seq->clip);
+					seq->clip->id.us++;
 				}
 				if (seq->scene_camera) seq->scene_camera= newlibadr(fd, sce->id.lib, seq->scene_camera);
 				if (seq->sound) {

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2012-04-09 07:06:06 UTC (rev 45484)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2012-04-09 08:45:51 UTC (rev 45485)
@@ -50,6 +50,7 @@
 
 #include "BKE_context.h"
 #include "BKE_global.h"
+#include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_sequencer.h"
 #include "BKE_movieclip.h"
@@ -323,7 +324,10 @@
 	seq->type = SEQ_MOVIECLIP;
 	seq->blend_mode = SEQ_CROSS;
 	seq->clip = clip;
-	
+
+	if (seq->clip->id.us == 0)
+		seq->clip->id.us = 1;
+
 	/* basic defaults */
 	seq->strip = strip = MEM_callocN(sizeof(Strip), "strip");
 	seq->len =  BKE_movieclip_get_duration(clip);




More information about the Bf-blender-cvs mailing list