[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18723] branches/blender2.5/blender/source /blender: * Was missing checks for scene-> ed which crashed blender when using the sequencer for the first time.
Campbell Barton
ideasman42 at gmail.com
Wed Jan 28 23:36:38 CET 2009
Revision: 18723
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18723
Author: campbellbarton
Date: 2009-01-28 23:36:34 +0100 (Wed, 28 Jan 2009)
Log Message:
-----------
* Was missing checks for scene->ed which crashed blender when using the sequencer for the first time.
* Added WM_OT_tweak_gesture operator for select, drag
* Sequencer select operator now returns OPERATOR_FINISHED|OPERATOR_PASS_THROUGH
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h
branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
branches/blender2.5/blender/source/blender/blenlib/intern/bpath.c
branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_draw.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_header.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c
branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h 2009-01-28 22:36:34 UTC (rev 18723)
@@ -140,6 +140,7 @@
void seq_free_sequence(struct Editing *ed, struct Sequence *seq);
void seq_free_strip(struct Strip *strip);
void seq_free_editing(struct Editing *ed);
+struct Editing *seq_give_editing(struct Scene *scene, int alloc);
char *give_seqname(struct Sequence *seq);
struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown);
struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown);
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -251,7 +251,7 @@
}
while(scene) {
- ed= scene->ed;
+ ed= seq_give_editing(scene, 0);
if(ed) {
seq= ed->seqbasep->first;
while(seq) {
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -184,6 +184,17 @@
MEM_freeN(seq);
}
+Editing *seq_give_editing(Scene *scene, int alloc)
+{
+ if (scene->ed == NULL && alloc) {
+ Editing *ed;
+
+ ed= scene->ed= MEM_callocN( sizeof(Editing), "addseq");
+ ed->seqbasep= &ed->seqbase;
+ }
+ return scene->ed;
+}
+
void seq_free_editing(Editing *ed)
{
MetaStack *ms;
@@ -594,10 +605,10 @@
{
/* all strips together per kind, and in order of y location ("machine") */
ListBase seqbase, effbase;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq, *seqt;
- ed= scene->ed;
+
if(ed==NULL) return;
seqbase.first= seqbase.last= 0;
@@ -1036,14 +1047,11 @@
int evaluate_seq_frame(Scene *scene, int cfra)
{
- Editing *ed;
- Sequence *seq_arr[MAXSEQ+1];
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq_arr[MAXSEQ+1];
- ed= scene->ed;
- if(ed==NULL) return 0;
-
- return evaluate_seq_frame_gen(seq_arr, ed->seqbasep, cfra);
-
+ if(ed==NULL) return 0;
+ return evaluate_seq_frame_gen(seq_arr, ed->seqbasep, cfra);
}
static int video_seq_is_rendered(Sequence * seq)
@@ -2403,12 +2411,12 @@
static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown)
{
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
int count;
ListBase *seqbasep;
TStripElem *se;
- ed= scene->ed;
+
if(ed==NULL) return NULL;
count = BLI_countlist(&ed->metastack);
@@ -2818,7 +2826,7 @@
void free_imbuf_seq_except(Scene *scene, int cfra)
{
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
TStripElem *se;
int a;
@@ -2960,10 +2968,10 @@
void update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_change, int ibuf_change)
{
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
- if (!ed) return;
+ if (ed==NULL) return;
for (seq=ed->seqbase.first; seq; seq=seq->next)
update_changed_seq_recurs(scene, seq, changed_seq, len_change, ibuf_change);
@@ -2972,7 +2980,7 @@
void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo)
{
/* force update of all sequences with this ipo, on ipo changes */
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
if(ed==NULL) return;
Modified: branches/blender2.5/blender/source/blender/blenlib/intern/bpath.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenlib/intern/bpath.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/blenlib/intern/bpath.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -201,7 +201,9 @@
return snd;
}
-static struct Sequence *seq_stepdata__internal(struct BPathIterator *bpi, int step_next) {
+static struct Sequence *seq_stepdata__internal(struct BPathIterator *bpi, int step_next)
+{
+ Editing *ed;
Sequence *seq;
/* Initializing */
@@ -214,11 +216,11 @@
}
while (bpi->seqdata.scene) {
-
- if (bpi->seqdata.scene->ed) {
+ ed= seq_give_editing(bpi->seqdata.scene, 0);
+ if (ed) {
if (bpi->seqdata.seqar == NULL) {
/* allocate the sequencer array */
- seq_array(bpi->seqdata.scene->ed, &bpi->seqdata.seqar, &bpi->seqdata.totseq, 0);
+ seq_array(ed, &bpi->seqdata.seqar, &bpi->seqdata.totseq, 0);
bpi->seqdata.seq = 0;
}
Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -1320,11 +1320,10 @@
}
else if(soops->outlinevis==SO_SEQUENCE) {
Sequence *seq;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
int op;
- ed= scene->ed;
- if(!ed)
+ if(ed==NULL)
return;
seq= ed->seqbasep->first;
@@ -2129,7 +2128,7 @@
static int tree_element_active_sequence_dup(Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set)
{
Sequence *seq, *p;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
seq= (Sequence*)te->directdata;
if(set==0) {
@@ -2139,7 +2138,6 @@
}
// XXX select_single_seq(seq, 1);
- ed= scene->ed;
p= ed->seqbasep->first;
while(p) {
if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) {
Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -143,7 +143,7 @@
static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, TRUE);
Scene *sce_seq;
char sce_name[MAX_ID_NAME-2];
@@ -230,7 +230,7 @@
static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, TRUE);
struct anim *an;
char filename[FILE_MAX];
@@ -317,7 +317,7 @@
static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, TRUE);
bSound *sound;
@@ -415,7 +415,7 @@
static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, TRUE);
int tot_images= 1; //XXX FIXME, we need string arrays!
@@ -506,7 +506,7 @@
static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, TRUE);
Sequence *seq; /* generic strip vars */
Strip *strip;
Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_draw.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_draw.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -988,12 +988,12 @@
Scene *scene= CTX_data_scene(C);
View2D *v2d= &ar->v2d;
View2DScrollers *scrollers;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
float col[3];
int i;
- ed= scene->ed;
+
if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
draw_image_seq(scene, ar, sseq);
Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2009-01-28 21:43:43 UTC (rev 18722)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2009-01-28 22:36:34 UTC (rev 18723)
@@ -142,27 +142,25 @@
Sequence *get_last_seq(Scene *scene)
{
- Editing *ed;
- ed= scene->ed;
- if(!ed) return NULL;
+ Editing *ed= seq_give_editing(scene, FALSE);
+ if(ed==NULL) return NULL;
return ed->act_seq;
}
void set_last_seq(Scene *scene, Sequence *seq)
{
- Editing *ed;
- ed= scene->ed;
- if(!ed) return;
+ Editing *ed= seq_give_editing(scene, FALSE);
+ if(ed==NULL) return;
ed->act_seq= seq;
}
Sequence *get_forground_frame_seq(Scene *scene, int frame)
{
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq, *best_seq=NULL;
int best_machine = -1;
- ed= scene->ed;
+
if(!ed) return NULL;
for (seq=ed->seqbasep->first; seq; seq= seq->next) {
@@ -191,7 +189,7 @@
static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect */
{
- Editing *ed= scene->ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
struct SeqEffectHandle sh;
Sequence *last_seq= get_last_seq(scene);
@@ -214,10 +212,10 @@
void boundbox_seq(Scene *scene, rctf *rect)
{
Sequence *seq;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
float min[2], max[2];
- ed= scene->ed;
+
if(ed==NULL) return;
min[0]= 0.0;
@@ -262,10 +260,10 @@
/* looks to the left on lr==1, to the right on lr==2
sel - 0==unselected, 1==selected, -1==done care*/
Sequence *seq;
- Editing *ed;
+ Editing *ed= seq_give_editing(scene, FALSE);
- ed= scene->ed;
- if(ed==NULL) return 0;
+
+ if(ed==NULL) return NULL;
if (sel>0) sel = SELECT;
@@ -299,13 +297,13 @@
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list