Bug 325154

Summary: KWin invert effect warps window geometry and breaks window controls.
Product: [Plasma] kwin Reporter: Henry de Valence <hdevalence>
Component: effects-variousAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal Flags: thomas.luebking: ReviewRequest+
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
URL: https://git.reviewboard.kde.org/r/112877/
Latest Commit: Version Fixed In:
Attachments: Screenshot of window with invert effect applied.
Screenshot of the same window, after toggling the effect off.

Description Henry de Valence 2013-09-21 21:17:36 UTC
Created attachment 82444 [details]
Screenshot of window with invert effect applied.

When I use the invert effect on a single window, it warps the window geometry, making a square window appear as a rectangle that looks close to 9:16 (coincidentally close to the aspect ratio of my screen). In addition, the window controls don't work properly -- for instance, the cursor turns into a resize handle *above* where the window appears.
Comment 1 Henry de Valence 2013-09-21 21:18:43 UTC
Created attachment 82445 [details]
Screenshot of the same window, after toggling the effect off.
Comment 2 Thomas Lübking 2013-09-21 21:33:01 UTC
Looks like a polluted shader.

Please attach the output of "qdbus org.kde.kwin /KWin supportInformation"
Comment 3 Henry de Valence 2013-09-21 22:19:08 UTC
Here is the output:

hdevalence@noether ~> qdbus-qt4 org.kde.kwin /KWin supportInformation
KWin Support Information:
The following information should be used when requesting support on e.g. http://forum.kde.org.
It provides information about the currently running instance, which options are used,
what OpenGL driver and which effects are running.
Please post the information provided underneath this introductory text to a paste bin service
like http://paste.kde.org instead of pasting into support threads.

==========================

Version
=======
KWin version: 4.11.1
KDE SC version (runtime): 4.11.1
KDE SC version (compile): 4.11.1
Qt Version: 4.8.5

Options
=======
focusPolicy: 1
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 750
delayFocusInterval: 300
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 4
focusPolicyIsReasonable: true
borderSnapZone: 30
windowSnapZone: 30
centerSnapZone: 0
snapOnlyWhenOverlapping: false
showDesktopIsMinimizeAll: false
rollOverDesktops: true
focusStealingPreventionLevel: 1
legacyFullscreenSupport: false
operationTitlebarDblClick: 
commandActiveTitlebar1: 0
commandActiveTitlebar2: 30
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 30
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 31
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
showGeometryTip: true
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.15
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
inactiveTabsSkipTaskbar: false
autogroupSimilarWindows: false
autogroupInForeground: true
compositingMode: 1
useCompositing: true
compositingInitialized: true
hiddenPreviews: 1
unredirectFullscreen: false
glSmoothScale: 2
colorCorrected: false
xrenderSmoothScale: false
maxFpsInterval: 16666666
refreshRate: 0
vBlankTime: 6000000
glDirect: true
glStrictBinding: true
glStrictBindingFollowsDriver: true
glLegacy: false
glCoreProfile: false
glPreferBufferSwap: 112

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 
timeThreshold: 150
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Multi-Head: no
Active screen follows mouse:  yes
Number of Screens: 2
Screen 0 Geometry: 0,0,1440x2560
Screen 1 Geometry: 1440,0,1440x2560

Decoration
==========
Current Plugin: kwin3_oxygen
Shadows: yes
Alpha: yes
Announces Alpha: yes
Tabbing: yes
Frame Overlap: no
Blur Behind: no

Compositing
===========
Qt Graphics System: raster
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD PITCAIRN
OpenGL version string: 2.1 Mesa 9.2.0
OpenGL shading language version string: 1.30
Driver: Unknown
GPU class: Unknown
OpenGL version: 2.1
GLSL version: 1.30
Mesa version: 9.2
X server version: 1.14.3
Linux kernel version: 3.11.1
Direct rendering: yes
Requires strict binding: yes
GLSL shaders:  yes
Texture NPOT support:  yes
Virtual Machine:  no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace:  no

Loaded Effects:
---------------
kwin4_effect_zoom
kwin4_effect_invert
kwin4_effect_slidingpopups
kwin4_effect_login
kwin4_effect_wobblywindows
kwin4_effect_minimizeanimation
kwin4_effect_screenshot
kwin4_effect_slide
kwin4_effect_desktopgrid
kwin4_effect_translucency
kwin4_effect_diminactive
kwin4_effect_maximize
kwin4_effect_fade
kwin4_effect_highlightwindow
kwin4_effect_taskbarthumbnail
kwin4_effect_dialogparent
kwin4_effect_presentwindows
kwin4_effect_blur
kwin4_effect_logout
kwin4_effect_dashboard
kwin4_effect_windowgeometry
kwin4_effect_screenedge
kwin4_effect_startupfeedback
kwin4_effect_kscreen

Currently Active Effects:
-------------------------
kwin4_effect_diminactive
kwin4_effect_blur

Effect Settings:
----------------
kwin4_effect_zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
enableFocusTracking: false
followFocus: true
focusDelay: 350
moveFactor: 20
targetZoom: 1

kwin4_effect_invert:

kwin4_effect_slidingpopups:
fadeInTime: 250
fadeOutTime: 250

kwin4_effect_login:

kwin4_effect_wobblywindows:
stiffness: 0.15
drag: 0.8
moveFactor: 0.1
xTesselation: 20
yTesselation: 20
minVelocity: 0
maxVelocity: 1000
stopVelocity: 0.5
minAcceleration: 0
maxAcceleration: 1000
stopAcceleration: 0.5
moveEffectEnabled: true
openEffectEnabled: false
closeEffectEnabled: false
moveWobble: true
resizeWobble: true

kwin4_effect_minimizeanimation:

kwin4_effect_screenshot:

kwin4_effect_slide:

kwin4_effect_desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true

kwin4_effect_translucency:

kwin4_effect_diminactive:
dimPanels: false
dimDesktop: false
dimKeepAbove: false
dimByGroup: true
dimStrength: 5

kwin4_effect_maximize:

kwin4_effect_fade:

kwin4_effect_highlightwindow:

kwin4_effect_taskbarthumbnail:

kwin4_effect_dialogparent:

kwin4_effect_presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: false
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: false
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0
dragToClose: false

kwin4_effect_blur:
blurRadius: 12
cacheTexture: true

kwin4_effect_logout:
useBlur: true

kwin4_effect_dashboard:
brightness: 0.5
saturation: 0.5
blur: false

kwin4_effect_windowgeometry:
handlesMoves: true
handlesResizes: true

kwin4_effect_screenedge:

kwin4_effect_startupfeedback:

kwin4_effect_kscreen:


hdevalence@noether ~>
Comment 4 Thomas Lübking 2013-09-21 22:27:04 UTC
Multiscreen, as suspected ;-)

Brother of bug #323311

After altering the screen setup, toggle compositing off and on - should workaround this.

(The bug manifests if you had invoked the effect, then alter the screen geometry and on next invocation things are screwed. Toggling the compositor will implicitly reload the shader with the updated values)
Comment 5 Thomas Lübking 2013-09-23 23:12:10 UTC
Git commit 0e3c88b89804d437e963bb4d8de0dbd6c10db2d7 by Thomas Lübking.
Committed on 21/09/2013 at 22:36.
Pushed by luebking into branch 'KDE/4.11'.

reset invert shader on viewport resize

General problem known from bug #325154
FXED-IN: 4.11.2
REVIEW: 112877

M  +6    -0    kwin/effects/invert/invert.cpp
M  +3    -0    kwin/effects/invert/invert.h

http://commits.kde.org/kde-workspace/0e3c88b89804d437e963bb4d8de0dbd6c10db2d7