Merge lp:~townsend/compiz/fix-minimize-unredirect-window-0.9.9 into lp:compiz/0.9.9

Proposed by Christopher Townsend
Status: Merged
Approved by: Marco Trevisan (Treviño)
Approved revision: 3654
Merged at revision: 3654
Proposed branch: lp:~townsend/compiz/fix-minimize-unredirect-window-0.9.9
Merge into: lp:compiz/0.9.9
Diff against target: 71 lines (+27/-2)
4 files modified
plugins/opengl/src/fsregion/fsregion.cpp (+1/-1)
plugins/opengl/src/fsregion/fsregion.h (+2/-1)
plugins/opengl/src/fsregion/tests/test-fsregion.cpp (+19/-0)
plugins/opengl/src/paint.cpp (+5/-0)
To merge this branch: bzr merge lp:~townsend/compiz/fix-minimize-unredirect-window-0.9.9
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Marco Trevisan (Treviño) Approve
Review via email: mp+163162@code.launchpad.net

Commit message

Fixed issue where minimizing an unredirect full screen window would repaint the full screen window after minimizing it even though it isn't really there. This is a backport of lp:compiz revno. 3686.

Description of the change

Note: This is a backport of lp:compiz revno. 3686.

= Issue =
Minimizing an unredirect full screen window will display the full screen window after the minimization even though it isn't really there.

= Fix =
Do not unredirect a full screen window if no occlusion is detected meaning that it has been minimized.

= Test =
Added some unit test coverage with Sam's guidance.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

I've filed bug https://bugs.launchpad.net/compiz/+bug/1178514 about the failing tests. Its not an issue here specifically.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

+1

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'plugins/opengl/src/fsregion/fsregion.cpp'
--- plugins/opengl/src/fsregion/fsregion.cpp 2012-11-29 10:51:38 +0000
+++ plugins/opengl/src/fsregion/fsregion.cpp 2013-05-09 15:31:55 +0000
@@ -48,7 +48,7 @@
48{48{
49 bool fullscreen = false;49 bool fullscreen = false;
5050
51 if (!(flags & (Desktop | Alpha)) &&51 if (!(flags & (Desktop | Alpha | NoOcclusionDetection)) &&
52 region == untouched &&52 region == untouched &&
53 region == orig)53 region == orig)
54 {54 {
5555
=== modified file 'plugins/opengl/src/fsregion/fsregion.h'
--- plugins/opengl/src/fsregion/fsregion.h 2012-11-29 10:51:38 +0000
+++ plugins/opengl/src/fsregion/fsregion.h 2013-05-09 15:31:55 +0000
@@ -37,7 +37,8 @@
37 typedef enum37 typedef enum
38 {38 {
39 Desktop = 1,39 Desktop = 1,
40 Alpha = 240 Alpha = 2,
41 NoOcclusionDetection = 3
41 } WinFlag;42 } WinFlag;
4243
43 typedef unsigned int WinFlags;44 typedef unsigned int WinFlags;
4445
=== modified file 'plugins/opengl/src/fsregion/tests/test-fsregion.cpp'
--- plugins/opengl/src/fsregion/tests/test-fsregion.cpp 2012-11-29 10:51:38 +0000
+++ plugins/opengl/src/fsregion/tests/test-fsregion.cpp 2013-05-09 15:31:55 +0000
@@ -68,6 +68,25 @@
68 FullscreenRegion::Desktop));68 FullscreenRegion::Desktop));
69}69}
7070
71TEST (OpenGLFullscreenRegion, NoOcclusionFullscreen)
72{
73 FullscreenRegion monitor (CompRect (0, 0, 1024, 768));
74 EXPECT_FALSE (monitor.isCoveredBy (CompRegion (0, 0, 1024, 768),
75 FullscreenRegion::NoOcclusionDetection));
76 EXPECT_FALSE (monitor.isCoveredBy (CompRegion (0, 0, 1024, 768),
77 FullscreenRegion::Desktop));
78}
79
80TEST (OpenGLFullscreenRegion, NoOcclusionOverFullscreen)
81{
82 FullscreenRegion monitor (CompRect (0, 0, 1024, 768));
83 EXPECT_FALSE (monitor.isCoveredBy (CompRegion (50, 60, 70, 80),
84 FullscreenRegion::NoOcclusionDetection));
85 EXPECT_FALSE (monitor.isCoveredBy (CompRegion (0, 0, 1024, 768)));
86 EXPECT_FALSE (monitor.isCoveredBy (CompRegion (0, 0, 1024, 768),
87 FullscreenRegion::Desktop));
88}
89
71TEST (OpenGLFullscreenRegion, NormalWindows)90TEST (OpenGLFullscreenRegion, NormalWindows)
72{91{
73 FullscreenRegion monitor (CompRect (0, 0, 1024, 768));92 FullscreenRegion monitor (CompRect (0, 0, 1024, 768));
7493
=== modified file 'plugins/opengl/src/paint.cpp'
--- plugins/opengl/src/paint.cpp 2013-01-03 16:05:26 +0000
+++ plugins/opengl/src/paint.cpp 2013-05-09 15:31:55 +0000
@@ -353,6 +353,11 @@
353 flags |= FullscreenRegion::Desktop;353 flags |= FullscreenRegion::Desktop;
354 if (w->alpha ())354 if (w->alpha ())
355 flags |= FullscreenRegion::Alpha;355 flags |= FullscreenRegion::Alpha;
356
357 /* Anything which was not occlusion detected is not a suitable
358 * candidate for unredirection either */
359 if (!status)
360 flags |= FullscreenRegion::NoOcclusionDetection;
356 361
357 CompositeWindow *cw = CompositeWindow::get (w);362 CompositeWindow *cw = CompositeWindow::get (w);
358363

Subscribers

People subscribed via source and target branches