From 3863aa91140a8fde20a5add8ada976ee764b735b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 10 Nov 2011 13:39:25 +0000 Subject: Cycles: fix crash in image assign/remove in image editor. --- source/blender/editors/include/ED_image.h | 2 +- source/blender/editors/space_image/image_ops.c | 4 ++-- source/blender/editors/space_image/space_image.c | 16 +++++++--------- source/blender/makesrna/intern/rna_space.c | 2 +- source/blenderplayer/bad_level_call_stubs/stubs.c | 4 +++- 5 files changed, 14 insertions(+), 14 deletions(-) (limited to 'source') diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h index 4e8aadecfc7..27c61e98e21 100644 --- a/source/blender/editors/include/ED_image.h +++ b/source/blender/editors/include/ED_image.h @@ -41,7 +41,7 @@ struct wmWindowManager; /* space_image.c, exported for transform */ struct Image *ED_space_image(struct SpaceImage *sima); -void ED_space_image_set(struct bContext *C, struct SpaceImage *sima, struct Scene *scene, struct Object *obedit, struct Image *ima); +void ED_space_image_set(struct SpaceImage *sima, struct Scene *scene, struct Object *obedit, struct Image *ima); struct ImBuf *ED_space_image_acquire_buffer(struct SpaceImage *sima, void **lock_r); void ED_space_image_release_buffer(struct SpaceImage *sima, void *lock); diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 7121e4872eb..77c92b2d9c3 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -804,7 +804,7 @@ static int image_open_exec(bContext *C, wmOperator *op) RNA_property_update(C, &pprop->ptr, pprop->prop); } else if(sima) { - ED_space_image_set(C, sima, scene, obedit, ima); + ED_space_image_set(sima, scene, obedit, ima); iuser= &sima->iuser; } else { @@ -1420,7 +1420,7 @@ static int image_new_exec(bContext *C, wmOperator *op) RNA_property_update(C, &ptr, prop); } else if(sima) - ED_space_image_set(C, sima, scene, obedit, ima); + ED_space_image_set(sima, scene, obedit, ima); // XXX other users? BKE_image_signal(ima, (sima)? &sima->iuser: NULL, IMA_SIGNAL_USER_NEW_IMAGE); diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index c29553a9c87..99c190cd2dd 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -82,9 +82,10 @@ Image *ED_space_image(SpaceImage *sima) } /* called to assign images to UV faces */ -void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, Image *ima) +void ED_space_image_set(SpaceImage *sima, Scene *scene, Object *obedit, Image *ima) { - ED_uvedit_assign_image(CTX_data_main(C), scene, obedit, ima, sima->image); + /* context may be NULL, so use global */ + ED_uvedit_assign_image(G.main, scene, obedit, ima, sima->image); /* change the space ima after because uvedit_face_visible uses the space ima * to check if the face is displayed in UV-localview */ @@ -99,13 +100,10 @@ void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obe if(sima->image && sima->image->id.us==0) sima->image->id.us= 1; - if(C) { - if(obedit) - WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); - - ED_area_tag_redraw(CTX_wm_area(C)); - - } + if(obedit) + WM_main_add_notifier(NC_GEOM|ND_DATA, obedit->data); + + WM_main_add_notifier(NC_SPACE|ND_SPACE_IMAGE, NULL); } ImBuf *ED_space_image_acquire_buffer(SpaceImage *sima, void **lock_r) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index db4db299f92..31f3d59e643 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -514,7 +514,7 @@ static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value) SpaceImage *sima= (SpaceImage*)(ptr->data); bScreen *sc= (bScreen*)ptr->id.data; - ED_space_image_set(NULL, sima, sc->scene, sc->scene->obedit, (Image*)value.data); + ED_space_image_set(sima, sc->scene, sc->scene->obedit, (Image*)value.data); } static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *UNUSED(C), PointerRNA *ptr, diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 6af05dd1361..48dcf8a1c7f 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -47,6 +47,7 @@ struct CSG_VertexIteratorDescriptor; struct ColorBand; struct CurveMapping; struct Curve; +struct DerivedMesh; struct EditBone; struct EditFace; struct EditMesh; @@ -77,6 +78,7 @@ struct RenderEngine; struct RenderEngineType; struct RenderLayer; struct RenderResult; +struct Scene; struct ScrArea; struct SculptSession; struct ShadeInput; @@ -198,7 +200,7 @@ int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit){r int ED_space_image_show_render(struct SpaceImage *sima){return 0;} int ED_space_image_show_paint(struct SpaceImage *sima){return 0;} void ED_space_image_paint_update(struct wmWindowManager *wm, struct ToolSettings *settings){} -void ED_space_image_set(struct bContext *C, struct SpaceImage *sima, struct Scene *scene, struct Object *obedit, struct Image *ima){} +void ED_space_image_set(struct SpaceImage *sima, struct Scene *scene, struct Object *obedit, struct Image *ima){} struct ImBuf *ED_space_image_buffer(struct SpaceImage *sima){return (struct ImBuf *) NULL;} void ED_screen_set_scene(struct bContext *C, struct Scene *scene){} void ED_space_clip_set(struct bContext *C, struct SpaceClip *sc, struct MovieClip *clip){} -- cgit v1.2.3