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:
authorJeroen Bakker <j.bakker@atmind.nl>2020-05-25 11:43:44 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2020-05-26 09:29:24 +0300
commit77fdd189e4b22d2aa2410109a1a514d21f58d865 (patch)
tree9542e07d9d946ff329038afed6c84681264b82be /source/blender/editors/space_view3d
parent39aa122a0e6d8ff744bec9a245b23d8e9eb2387d (diff)
Fix T76970: Unneccessary update calls viewport
Due to recent changes clicks in the node editor would trigger a depsgraph update resulting in too many redraws. This patch limits the updates to when workbench shown in texture mode in any visible screen. There are still cases where too many updates are created. For example when there are a Cycles render viewport and a Workbench texture viewport on the same screen. This fix is meant as a workaround. The actual fix should add a mechanism to the depsgraph and the viewports should check if they need to be redrawn. Reviewed By: Brecht van Lommel Differential Revision: https://developer.blender.org/D7830
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r--source/blender/editors/space_view3d/view3d_utils.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_utils.c b/source/blender/editors/space_view3d/view3d_utils.c
index 09e1dca3152..377e8c58ba3 100644
--- a/source/blender/editors/space_view3d/view3d_utils.c
+++ b/source/blender/editors/space_view3d/view3d_utils.c
@@ -86,6 +86,26 @@ void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float
UI_GetThemeColor3fv(TH_BACK, r_color);
}
+bool ED_view3d_has_workbench_in_texture_color(const Scene *scene,
+ const Object *ob,
+ const View3D *v3d)
+{
+ if (v3d->shading.type == OB_SOLID) {
+ if (v3d->shading.color_type == V3D_SHADING_TEXTURE_COLOR) {
+ return true;
+ }
+ if (ob->mode == OB_MODE_TEXTURE_PAINT) {
+ return true;
+ }
+ }
+ else if (v3d->shading.type == OB_RENDER) {
+ if (STREQ(scene->r.engine, RE_engine_id_BLENDER_WORKBENCH)) {
+ return scene->display.shading.color_type == V3D_SHADING_TEXTURE_COLOR;
+ }
+ }
+ return false;
+}
+
Camera *ED_view3d_camera_data_get(View3D *v3d, RegionView3D *rv3d)
{
/* establish the camera object,