From f0432e37ab06831167cf84c589fad7d5a28d54ef Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 3 Dec 2018 20:06:10 +0100 Subject: Fix T58636: repeat image in UV editor not working. A little too much code got removed in fb24813. --- source/blender/editors/space_image/image_draw.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/space_image') diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 4cbe25462af..a46767495dd 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -549,6 +549,26 @@ static void draw_image_buffer(const bContext *C, SpaceImage *sima, ARegion *ar, } } +static void draw_image_buffer_repeated(const bContext *C, SpaceImage *sima, ARegion *ar, Scene *scene, ImBuf *ibuf, float zoomx, float zoomy) +{ + const double time_current = PIL_check_seconds_timer(); + + const int xmax = ceil(ar->v2d.cur.xmax); + const int ymax = ceil(ar->v2d.cur.ymax); + const int xmin = floor(ar->v2d.cur.xmin); + const int ymin = floor(ar->v2d.cur.ymin); + + for (int x = xmin; x < xmax; x++) { + for (int y = ymin; y < ymax; y++) { + draw_image_buffer(C, sima, ar, scene, ibuf, x, y, zoomx, zoomy); + + /* only draw until running out of time */ + if ((PIL_check_seconds_timer() - time_current) > 0.25) + return; + } + } +} + /* draw uv edit */ /* draw grease pencil */ @@ -699,7 +719,10 @@ void draw_image_main(const bContext *C, ARegion *ar) ED_region_grid_draw(ar, zoomx, zoomy); } else { - draw_image_buffer(C, sima, ar, scene, ibuf, 0.0f, 0.0f, zoomx, zoomy); + if (sima->flag & SI_DRAW_TILE) + draw_image_buffer_repeated(C, sima, ar, scene, ibuf, zoomx, zoomy); + else + draw_image_buffer(C, sima, ar, scene, ibuf, 0.0f, 0.0f, zoomx, zoomy); if (sima->flag & SI_DRAW_METADATA) { int x, y; -- cgit v1.2.3