Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorAntonioya <blendergit@gmail.com>2018-08-01 11:58:10 +0300
committerAntonioya <blendergit@gmail.com>2018-08-01 11:58:10 +0300
commit20e5fc4d328bf566841f22b16de809da8de15bf7 (patch)
tree1e2e6c682b1ce3b05d47a016a1250d960dcee21b /source
parentaf79ac944d7b14f8ce24548345cac5a34ff4de55 (diff)
Fix context problem when render in background mode
Bug reported by Sergey.
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/intern/draw_manager.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 0c731811f32..ab50e6673f2 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1659,7 +1659,24 @@ void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph
Render *render = engine->re;
/* Changing Context */
/* GPXX Review this context */
- DRW_opengl_context_enable();
+ if (G.background && DST.gl_context == NULL) {
+ WM_init_opengl(G_MAIN);
+ }
+
+ void *re_gl_context = RE_gl_context_get(render);
+ void *re_gpu_context = NULL;
+
+ /* Changing Context */
+ if (re_gl_context != NULL) {
+ DRW_opengl_render_context_enable(re_gl_context);
+ /* We need to query gpu context after a gl context has been bound. */
+ re_gpu_context = RE_gpu_context_get(render);
+ DRW_gawain_render_context_enable(re_gpu_context);
+ }
+ else {
+ DRW_opengl_context_enable();
+ }
+
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
DST.options.is_image_render = true;