forked from bartvdbraak/blender
Fix (unreported) load image code calling icin/preview update from non-Main thread.
Icin/preview only works in main thread, while image loading can be done from others too... This could have generated random crashes and such.
This commit is contained in:
parent
0385b33f0b
commit
13beeb5892
@ -514,8 +514,12 @@ static int icon_id_ensure_create_icon(struct ID *id)
|
||||
|
||||
int BKE_icon_id_ensure(struct ID *id)
|
||||
{
|
||||
if (!id || G.background)
|
||||
/* Never handle icons in non-main thread! */
|
||||
BLI_assert(BLI_thread_is_main());
|
||||
|
||||
if (!id || G.background) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (id->icon_id)
|
||||
return id->icon_id;
|
||||
|
@ -3133,9 +3133,11 @@ static void image_create_multilayer(Image *ima, ImBuf *ibuf, int framenr)
|
||||
/* common stuff to do with images after loading */
|
||||
static void image_initialize_after_load(Image *ima, ImBuf *ibuf)
|
||||
{
|
||||
/* preview is NULL when it has never been used as an icon before */
|
||||
if (G.background == 0 && ima->preview == NULL)
|
||||
/* Preview is NULL when it has never been used as an icon before.
|
||||
* Never handle previews/icons outside of main thread. */
|
||||
if (G.background == 0 && ima->preview == NULL && BLI_thread_is_main()) {
|
||||
BKE_icon_changed(BKE_icon_id_ensure(&ima->id));
|
||||
}
|
||||
|
||||
/* fields */
|
||||
if (ima->flag & IMA_FIELDS) {
|
||||
|
Loading…
Reference in New Issue
Block a user