diff options
author | Ton Roosendaal <ton@blender.org> | 2013-01-05 21:57:17 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2013-01-05 21:57:17 +0400 |
commit | 1005cdc72a3f54554fcb9d8f1172e66492d4f627 (patch) | |
tree | bccfa25f07d595ee89cf8c0391106cb6ab461058 /source/blender/editors/render | |
parent | 8dfe7620fb7df5bc4adb6bc4b42bd3343dce3f74 (diff) |
Trackpad pans for UV/Image and MovieClip editors were inverse compared to all other editors.
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_preview.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 8d748d3ea20..cb3d92fbc67 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -84,6 +84,8 @@ #include "IMB_imbuf_types.h" #include "IMB_colormanagement.h" +#include "GPU_extensions.h" + #include "BIF_gl.h" #include "BIF_glutil.h" @@ -885,6 +887,8 @@ static void icon_preview_startjob(void *customdata, short *stop, short *do_updat ID *id = sp->id; short idtype = GS(id->name); + printf("icon start job %s\n", id->name); + if (idtype == ID_IM) { Image *ima = (Image *)id; ImBuf *ibuf = NULL; @@ -1007,8 +1011,27 @@ static void icon_preview_endjob(void *customdata) { IconPreview *ip = customdata; - if (ip->id && GS(ip->id->name) == ID_BR) - WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); + if (ip->id) { + printf("icon end job %s\n", ip->id->name); + + if (GS(ip->id->name) == ID_BR) + WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); + + if (GS(ip->id->name) == ID_MA) { + Material *ma = (Material *)ip->id; + PreviewImage *prv_img = ma->preview; + int i; + + /* signal to gpu texture */ + for (i = 0; i < NUM_ICON_SIZES; ++i) { + if (prv_img->gputexture[i]) { + GPU_texture_free(prv_img->gputexture[i]); + prv_img->gputexture[i] = NULL; + WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, ip->id); + } + } + } + } } static void icon_preview_free(void *customdata) @@ -1044,7 +1067,7 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r /* setup job */ WM_jobs_customdata_set(wm_job, ip, icon_preview_free); - WM_jobs_timer(wm_job, 0.25, NC_MATERIAL, NC_MATERIAL); + WM_jobs_timer(wm_job, 0.1, NC_MATERIAL, NC_MATERIAL); WM_jobs_callbacks(wm_job, icon_preview_startjob_all_sizes, NULL, NULL, icon_preview_endjob); WM_jobs_start(CTX_wm_manager(C), wm_job); |