diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-10-09 17:33:24 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-10-09 17:33:59 +0300 |
commit | 14c53c5018abaa1ab05f1821cdb1b2e0b7824d21 (patch) | |
tree | 5f844203321a642e2e23f77b7634e63f88a918cf /source/blender/gpu/intern/gpu_state.cc | |
parent | d39043b5ae054510e3683b63cfefde76e5a4c6db (diff) |
BGL: fix issues with addons using BGL at startup
This was an issue for Cycles.
This also makes the `GPU_bgl*` functions less fragile by checking for
null pointers.
Diffstat (limited to 'source/blender/gpu/intern/gpu_state.cc')
-rw-r--r-- | source/blender/gpu/intern/gpu_state.cc | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc index 44cc11155bb..4bdd49cb210 100644 --- a/source/blender/gpu/intern/gpu_state.cc +++ b/source/blender/gpu/intern/gpu_state.cc @@ -329,22 +329,28 @@ void GPU_apply_state(void) void GPU_bgl_start(void) { - StateManager &state_manager = *(Context::get()->state_manager); - if (state_manager.use_bgl == false) { - /* Expected by many addons (see T80169, T81289). - * This will reset the blend function. */ - GPU_blend(GPU_BLEND_NONE); - state_manager.apply_state(); - state_manager.use_bgl = true; + Context *ctx = Context::get(); + if (ctx && ctx->state_manager) { + StateManager &state_manager = *(Context::get()->state_manager); + if (state_manager.use_bgl == false) { + /* Expected by many addons (see T80169, T81289). + * This will reset the blend function. */ + GPU_blend(GPU_BLEND_NONE); + state_manager.apply_state(); + state_manager.use_bgl = true; + } } } void GPU_bgl_end(void) { - StateManager &state_manager = *(Context::get()->state_manager); - state_manager.use_bgl = false; - /* Resync state tracking. */ - state_manager.force_state(); + Context *ctx = Context::get(); + if (ctx && ctx->state_manager) { + StateManager &state_manager = *ctx->state_manager; + state_manager.use_bgl = false; + /* Resync state tracking. */ + state_manager.force_state(); + } } bool GPU_bgl_get(void) |