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
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c4
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c12
3 files changed, 21 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 73fd3f562be..1774390a1e5 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -65,6 +65,8 @@
#include "GPU_viewport.h"
#include "GPU_matrix.h"
+#include "DRW_engine.h"
+
#include "WM_api.h"
#include "WM_types.h"
#include "WM_message.h"
@@ -572,7 +574,9 @@ static void view3d_main_region_exit(wmWindowManager *wm, ARegion *ar)
}
if (rv3d->viewport) {
+ DRW_opengl_context_enable();
GPU_viewport_free(rv3d->viewport);
+ DRW_opengl_context_disable();
MEM_freeN(rv3d->viewport);
rv3d->viewport = NULL;
}
@@ -757,7 +761,9 @@ static void view3d_main_region_free(ARegion *ar)
GPU_fx_compositor_destroy(rv3d->compositor);
}
if (rv3d->viewport) {
+ DRW_opengl_context_enable();
GPU_viewport_free(rv3d->viewport);
+ DRW_opengl_context_disable();
MEM_freeN(rv3d->viewport);
}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 6e3a0883489..68996cdf906 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2131,11 +2131,13 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
}
const bool own_ofs = (ofs == NULL);
+ DRW_opengl_context_enable();
if (own_ofs) {
/* bind */
ofs = GPU_offscreen_create(sizex, sizey, use_full_sample ? 0 : samples, true, false, err_out);
if (ofs == NULL) {
+ DRW_opengl_context_disable();
return NULL;
}
}
@@ -2267,6 +2269,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
GPU_offscreen_free(ofs);
}
+ DRW_opengl_context_disable();
+
if (ibuf->rect_float && ibuf->rect)
IMB_rect_from_float(ibuf);
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 4ccf86138e7..cb329e62e96 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -922,6 +922,11 @@ int view3d_opengl_select(
UI_Theme_Store(&theme_state);
UI_SetTheme(SPACE_VIEW3D, RGN_TYPE_WINDOW);
+#ifndef WITH_OPENGL_LEGACY
+ /* All of the queries need to be perform on the drawing context. */
+ DRW_opengl_context_enable();
+#endif
+
/* Re-use cache (rect must be smaller then the cached)
* other context is assumed to be unchanged */
if (GPU_select_is_cached()) {
@@ -941,7 +946,7 @@ int view3d_opengl_select(
v3d->zbuf = true;
glEnable(GL_DEPTH_TEST);
}
-
+
if (vc->rv3d->rflag & RV3D_CLIPPING)
ED_view3d_clipping_set(vc->rv3d);
@@ -994,6 +999,11 @@ int view3d_opengl_select(
ED_view3d_clipping_disable();
finally:
+
+#ifndef WITH_OPENGL_LEGACY
+ DRW_opengl_context_disable();
+#endif
+
if (hits < 0) printf("Too many objects in select buffer\n"); /* XXX make error message */
UI_Theme_Restore(&theme_state);