lp://qastaging/~compiz-team/compiz/compiz.fix_1171314

Created by Sam Spilsbury and last modified
Get this branch:
bzr branch lp://qastaging/~compiz-team/compiz/compiz.fix_1171314
Members of Compiz Maintainers can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Compiz Maintainers
Project:
Compiz
Status:
Merged

Recent revisions

3748. By Sam Spilsbury

Remove timeout

3747. By Sam Spilsbury

Don't add the frame to the toplevel stack if it hasn't been created yet.

In the event that a window is unreparented or destroyed, we usually need
to add its frame window to the toplevel window stack until the time at
which we recieve a DestroyNotify for it, as there may be incoming
ConfigureNotify events puporting to stack other windows relative to
that frame.

However, this does not apply in the case where we have not yet received
a CreateNotify for the frame window. In that case, it is not possible
for any stacking requests to be made relative to this window, so it
does not need to be added immediately. Instead, we can add it at the
time that we recieve a CreateNotify for it as a regular override
redirect window until the time that it is later destroyed.

(LP: #1171314)

3746. By Sam Spilsbury

Added new test StackingSync.DestroyClientJustBeforeReparent

Test that compiz' internal stack representation does not become
confused when a a client window is marked as destroyed just before
the ReparentNotify arrives. The parent window should not be added to
the window stack twice, and instead by added only once when we
recieve a CreateNotify for it.

As such, restacking the parent window toward the bottom of the stack
should result in any dependent stacking operations suceeding and not being
mistakenly placed at the top of the stack.

3745. By Iven Hsu

KWD: Fix compile errors with KDE 4.11.

The KWin developers made kdecorationbridge.h private.

See: http://lists.freedesktop.org/archives/compiz/2013-March/003479.html

(LP: #1193792). Fixes: https://bugs.launchpad.net/bugs/1193792.

Approved by PS Jenkins bot, Sam Spilsbury, MC Return.

3744. By Sam Spilsbury

Add more acceptance tests for the decor plugin.

PixmapDecoratedWindowAcceptance.
  UndecoratedWindowExpandToOrigSize

    Test that upon undecoration, the window has exactly the same geometry
    as it did before decoration.

  DISABLED_UndecorateStaticGravityWindow

    Tests that for windows with a static gravity, the window has exactly
    the same geometry as it did before decoration.

    Disabled, as core is currently not moving the window with the static
    gravity back to where it started.

AdjustmentExtents/PixmapDecorationAdjustment.
  AdjustRestoredWindowBorderMovesClient/P

    Test that changing the border extents causes the client window's
    absolute geometry to change.

  DISABLED_AdjustRestoredWindowBorderShrinkClient/P

    Tests that changing the border extents causes the client window's
    absolute geometry to shrink by the amount of border.

    Disabled, as the current behavior is to expand the frame window
    as opposed to shrinking the client (but this will be changed).

  DISABLED_ClientExpandsAsBorderShrinks/P

    Tests that as the border shrinks away, the client expands back to
    its original size.

    Disabled, as the current behavior is to expand the frame window
    as opposed to shrinking the client (but this will be changed).

  DISABLED_ClientExpandsAsBorderShrinksWhilstMaximized/P

    Tests that even if the client is maximized, if the restored border
    shrinks away it demaximizes back to the same position while also
    accounting for any change in the restored window border size.

    Disabled, as the current behavior is to expand the frame window
    as opposed to shrinking the client (but this will be changed).

  DISABLED_ClientExpandsAsBorderShrinksWhilstUndecorated/P

    Tests that even when the client is not permitted to be decorated
    because the decoration hint was removed, when it is redecorated
    it will be moved to the correct position taking into account any
    changes in its border size.

    Disabled, as the current behavior is to expand the frame window
    as opposed to shrinking the client (but this will be changed).

  DISABLED_AdjustRestoredWindowInputNoMoveClient/P

    Tests that adjusting the input extents (as independent from the
    border extents) of the client does not cause the client to move.

    Disabled, as this behavior appears to be broken in core.

Move the "GetImmediateParent" function into the compiz::testing namespace
so that it can be used by other tests. Fixes: https://bugs.launchpad.net/bugs/1188900.

Approved by PS Jenkins bot, Andrea Azzarone.

3743. By Sam Spilsbury

Only mark for no further instantiations once we've finished destructing
the plugin

(LP: #1193596). Fixes: https://bugs.launchpad.net/bugs/1193596.

Approved by PS Jenkins bot, Sami Jaktholm, MC Return.

3742. By Sam Spilsbury

Provide a basic decor plugin acceptance test suite.

This change provides a simple acceptance test suite for the decor plugin. It
creates a fake window decorator (cdt::FakeDecorator) and allows users to
create fake decorations (eg cdt::FakePixmapDecoration) which can be serialized
as decoration properties and set on windows under xorg-gtest. It also launches
compiz with the opengl, composite and decor plugins loaded and runs some
basic tests. Among them:

BaseDecorAcceptance.
  Startup:

    Basic canary "can we start compiz with these plugins" test

  FakeDecoratorSessionOwnerNameSetOnSelectionOwner:

    Create a fake decorator, ensure that libdecoration sets our
    session name "fake" on the selection owner

  FakeDecoratorReceiveClientMessage:

    Create fake decorator, ensure that libdecoration posts a client
    message to the root window announcing that the new decorator exists.

  DecorationSupportsWindowType:

    Create a fake decorator, announce support for the WINDOW type decorations
    and ensure that the correct atom is set on the session owner window.

  DecorationSupportsPixmapType:

    Create a fake decorator, announce support for the PIXMAP type decorations
    and ensure that the correct atom is set on the session owner window.

DecorFakeDecoratorAcceptance.
  WindowDefaultFallbackNoExtents:

    By default, newly created windows should recieve a fallback decoration
    but they should not have any frame extents.

DecorWithPixmapDefaultsAcceptance.

  These tests create a default pixmap decoration to use in the hypothetical
  situation that the window decorator hasn't yet generated a decoration
  for this window.

  FallbackRecieveInputFrameNotify:

    Verify that we get a _COMPIZ_WINDOW_DECOR_INPUT_FRAME property set on
    the client when it is created and mapped (eg, an input frame window
    was annonuced to be created)

  FallbackHasInputFrameInParent:

    Verify that a second window exists in the frame window after this
    message was recieved.

  FallbackNormalWindowExtentOnDecoration:

    Verify that _NET_FRAME_EXTENTS is set to the default window extents
    for the default decoration when the window was mapped.

  FallbackNormalWindowInputOnFrame:

    Verify that the input window matches the extents set.

PixmapDecoratedWindowAcceptance.

  These tests create a new window and an associated unique decoration for
  that window.

  MaximizeBorderExtentsOnMaximize:

    Maximize the window and ensure that the correct border extents are used.

  MaximizeBorderExtentsOnVertMaximize:

    Vertically maximize the window and ensure that the correct border extents
    are used.

  MaximizeBorderExtentsOnHorzMaximize:

    Horizontally maximize the window and ensure that the correct border
    extents are used.

  MaximizeFrameWindowSizeEqOutputSize:

    Maximie the window and ensure that the frame window exactly equals
    the output size.

  VertMaximizeFrameWindowSizeEqOutputYHeight:

    Maximize the window and ensure that the frame window's Y and Height
    values are consistent with the output size.

  HorzMaximizeFrameWindowSizeEqOutputXWidth:

    Ditto horizontal maximization.

  DISABLED_VertMaximizeFrameWindowSizeSameXWidth:

    Maximize the window vertically and ensure that the frame window's
    border-relative X position and width does not change.

    This test is disabled, as the behavior in compiz is currently broken,
    (but it means that we can fix it later and enable the test).

  DISABLED_HorzMaximizeFrameWindowSizeSameYHeight

    Maximize the window horizontally and ensure that the frame window's
    border-relative Y position and height does not change.

    This test is disabled, as the behavior in compiz is currently broken,
    (but it means that we can fix it later and enable the test).

(LP: #1188900). Fixes: https://bugs.launchpad.net/bugs/1188900.

Approved by PS Jenkins bot, Andrea Azzarone, MC Return.

3741. By Andrea Azzarone

Disable grid/put_maximize_key on ubuntu.

Approved by PS Jenkins bot, MC Return, Sam Spilsbury.

3740. By MC Return

Expo, code cleanup:

Declaration of local variables outside of loops.
Use prefix instead of postfix increments.
Declaration and assignment of local variables in one line, if possible.
Reduced the scope of some variables.
Removed redundant brackets.
Used static_cast <> (type) instead of (type) cast.
Added and removed newlines if appropriate.
Fixed indentation.
Added TODOs.

Expo, speed improvements:

Do not calculate screen->vpSize ().width () and screen->vpSize ().height ()
multiple times, instead save them in the unsigned ints vpCountHorz and
vpCountVert and use those variables instead.
Speed up the curve calculations by using additional variables to save results
to not have to re-calculate those all the time. The new variables introduced
are degToRad, screenWidth, screenWidthSquared, curveDistSquaredPlusQuarter,
pOne2MinusCurveDist, v0Squared and v2Squared.
Also introduced const float halfGapX = gapX / 2.0 and used this variable in the
calculations of curveDistance and curveRadius.
Simplified calculations of this type:
(M_PI / 180.0f) * curveAngle / 2.0, which is equal to: (M_PI / 360.0f) * curveAngle
Do not call optionGetGroundSize (); twice, instead save the value in the float
groundSize and use that variable in the following calculations.
Removed the creation of the redundant bool hide, which is just used once in an
if-condition check. It does not help to have this bool.
Try to avoid redundant GL_BLEND state changes, they are expensive - only enable
GL_BLEND if it is disabled and just disable it, if it was disabled before, otherwise
do nothing.
Try to avoid redundant GL filter changes - just query the filter state if the mipmap
option in CCSM is enabled. Also just set back the filter to the previous state if
we actually changed it, otherwise do nothing.
-5.5f * 2 = -11.0f.
No need to calculate M_PI / 180.0f 720 times:
Calculate this value once instead and save it in the const float mpi, use mpi
in the following looped calculations.
Use const int scw in the same loop instead of calling screen->width () 360 times.

glow.cpp:
Massively increased calculation speed of the glow texture:
No need for any macros here -> removed them and replaced them with local variables.
Precalculate values, store them in local variables and use those in the following
calculations (new variables are the ints winRealX, winRealY, winRealWidth, winRealHeight,
halfWinRealWidth, halfWinRealHeight, xPlusHalfWidth, yPlusHalfHeight, xPlusGlowOff,
yPlusGlowOff, xMinusGlowOff, yMinusGlowOff and the float glowPart).
Used w->geometry ().widthIncBorders () and w->geometry ().heightIncBorders ()
to determine winRealWidth and winRealHeight.

Expo, fixes:

Do not force "One wall per output" on the user, if his displays use different
resolutions.
"One big wall" makes a lot of sense for many multi-screen configs, where not
all of the screens have exactly the same resolution, so if the user explicitely
chooses this mode, Compiz should respect the user's choice.

(LP: #1009592). Fixes: https://bugs.launchpad.net/bugs/1009592.

Approved by PS Jenkins bot, Sam Spilsbury, Sami Jaktholm.

3739. By MC Return

src/output*.cpp cleanup:

Return ASAP, do not calculate stuff you do not need.
Declaration and assignment of variables in one line.
Declare local variables outside of loops.
Use prefix instead of postfix increment.
Added and removed newlines.
Fixed indentation.

Approved by PS Jenkins bot, Sam Spilsbury.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp://qastaging/compiz/0.9.10
This branch contains Public information 
Everyone can see this information.