From a9128a5109fad96eb9537ac2096d8f7328291dbd Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sun, 12 Dec 2004 21:13:07 +0000 Subject: Bug fix, after irc report sk1p: frame-sliding (LMB) in action, nla, sound and ipo window went into very tight while loop, causing cpu to choke. Added nice idle. Bug fix, found self while testing: - relative.blend, editmode - delete part, exit editmode - enter editmode, undo twice, exit editmode -> crash The trick to copy 'old' locations of vertices to keys isnt undo-resistant yet. This fix at least doesnt crash, but copying doesnt work when undo-ing back to previous editmode session (indices just differ from current mesh...) --- source/blender/src/editaction.c | 1 + source/blender/src/editmesh.c | 2 +- source/blender/src/editnla.c | 1 + source/blender/src/editsound.c | 4 ++++ source/blender/src/space.c | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/src/editaction.c b/source/blender/src/editaction.c index 45f9b850595..bed71e1a398 100644 --- a/source/blender/src/editaction.c +++ b/source/blender/src/editaction.c @@ -2470,6 +2470,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt) force_draw_plus(SPACE_IPO, 1); force_draw_plus(SPACE_BUTS, 1); } + else PIL_sleep_ms(30); } while(get_mbut() & mousebut); } diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index ddc3be4addd..6a7372ae16a 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -1192,7 +1192,7 @@ void load_editMesh(void) i = 0; mvert = me->mvert; while(eve) { - if (eve->keyindex >= 0) { // old vertex + if (eve->keyindex >= 0 && eve->keyindex < currkey->totelem) { // valid old vertex if(currkey == actkey) { if (actkey == me->key->refkey) { VECCOPY(fp, mvert->co); diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c index a61fac1bdb6..a979332e30e 100644 --- a/source/blender/src/editnla.c +++ b/source/blender/src/editnla.c @@ -312,6 +312,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) force_draw_plus(SPACE_VIEW3D, 1); force_draw_plus(SPACE_IPO, 1); } + else PIL_sleep_ms(30); } while(get_mbut() & mousebut); } diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c index b47bf4c580e..fc2ff3c3fb4 100644 --- a/source/blender/src/editsound.c +++ b/source/blender/src/editsound.c @@ -85,6 +85,9 @@ #include "SYS_System.h" +#include "PIL_time.h" + + /* this might move to the external header */ void* sound_get_libraryinterface(void); @@ -145,6 +148,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt) update_for_newframe(); force_draw_plus(SPACE_VIEW3D, 1); } + else PIL_sleep_ms(30); } while(get_mbut() & mousebut); ssound->flag &= ~SND_CFRA_NUM; diff --git a/source/blender/src/space.c b/source/blender/src/space.c index c9a4573f27b..4cd187a3a85 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -1797,6 +1797,7 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt) update_for_newframe(); force_draw_all(0); /* To make constraint sliders redraw */ } + else PIL_sleep_ms(30); } while(get_mbut() & mousebut); } -- cgit v1.2.3