lp:~jpakkane/compiz/dotdesktop-fix

Created by Jussi Pakkanen and last modified
Get this branch:
bzr branch lp:~jpakkane/compiz/dotdesktop-fix
Only Jussi Pakkanen can upload to this branch. If you are Jussi Pakkanen please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Jussi Pakkanen
Project:
Compiz
Status:
Merged

Recent revisions

3506. By Jussi Pakkanen

Fix desktop target name and definition.

3505. By Jussi Pakkanen

Explicitly check for the existence of pyrexc and error out if it is not found.
(LP: #1086704). Fixes: https://bugs.launchpad.net/bugs/1086704.

Approved by Daniel van Vugt, Sam Spilsbury, PS Jenkins bot.

3504. By Sam Spilsbury

Fix race condition causing --replace to fail occasionally.

Clear XErrors right before taking SubstructureRedirectMask.

This changes the startup order a fair bit. The new order is now:

1. Do non-critical initialization that does not require a server grab
2. Do the ICCCM check to shut down the other window manager
3. Take server grab
4. Create edge windows
5. Clear error buffer
6. Attempt to take SubstructureRedirectMask
7. Clear error buffer -> if fail, exit
8. Create handles based on XQueryTree
9. Release server grab

(LP: #1085591)

System test added to demonstrate that compiz should exit when another client has SubstructureRedirectMask and attempting to take it results in an X error. It wasn't doing that before, and instead checked for X errors much earlier on (in error, because an X error up there wouldn't indicate that another WM was running at all).

In order to make this work properly, some changes had to be made to compiz. This adds a new runtime switch --send-startup-message which simply posts a message to all clients saying that the startup procedure has finished (and either succeeded or failed). Its needed because the location of when we take the server grab was changed to a much smaller critical section of the code, and that doesn't include the property change on the selection window. This is a far more accurate way of knowing that we've started, because we send it /after/ the startup procedure is done (rather than relying on the server to do the right thing.

Also fixed race condition caused by destroying the WMSnSelectionWindow before shutdown.

 Because we haven't changed our active event mask
 to remove SubstructureRedirectMask, other ICCCM
 compliant window managers may receive a DestroyNotify
 (eg, because we're blocked on XSync) before we get
 a chance to close our display connection and remove
 our SubstructureRedirectMask. That will cause them
 to fail to start.

 The selection window is destroyed anyways when we
 close our connection, and that is a very accurate
 indicator to other WM's that we are well and truly
 gone because the protocol requires the implementation
 to remove all client event masks before destroying
 windows.

Added acceptance-tests for testing that behaviour. They are not added to the default test target for obvious reasons. Fixes: https://bugs.launchpad.net/bugs/1085591.

Approved by PS Jenkins bot, Daniel van Vugt.

3503. By MC Return

Minor Performance Optimizations:

* Return ASAP./Prevent executing any unnecessary operations if we return.
* Used De Morgan's laws to merge and simplify if statements.

Other Changes:

* C++ Style: Declared iterator variables inside the for loops they are used in.
* No logic changes have been made.

Approved by Daniel van Vugt.

3502. By Timo Jyrinki

Add Firefox to the unredirect exceptions. (LP: #1086337). Fixes: https://bugs.launchpad.net/bugs/1086337.

Approved by Daniel van Vugt, PS Jenkins bot.

3501. By MC Return

Reduced the scope of various variables.

Approved by Daniel van Vugt, Sam Spilsbury.

3500. By Stephen M. Webb

Move plugin initialization code out of assert() macro so it still runs even with NDEBUG defined (lp: #1085581). Fixes: https://bugs.launchpad.net/bugs/1085581.

Approved by Didier Roche.

3499. By Daniel van Vugt

Bump deb version to 0.9.9* to match the actual Compiz version.

Approved by Didier Roche.

3498. By Daniel van Vugt

Add an option to specify which windows are allowed to be unredirected when
they are fullscreen. Default: Allow unredirection on all window types except
common video players: Totem, MPlayer, Vlc or Plugin-container (Flash or other
nested browser windows).
(LP: #1051802)
. Fixes: https://bugs.launchpad.net/bugs/1051802.

Approved by PS Jenkins bot, Sam Spilsbury.

3497. By Daniel van Vugt

Fixed: unredirected fullscreen windows sliding offscreen were staying
unredirected (always visible), because compiz thought they were fullscreen
on a different monitor. Add extra smarts to tell the difference between
fullscreen and offscreen. (LP: #1084401). Fixes: https://bugs.launchpad.net/bugs/1084401.

Approved by Sam Spilsbury, PS Jenkins bot.

Branch metadata

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

Subscribers