Fix race condition when starting multiple instances (bgo#648522)
authorBertrand Lorentz <bertrand.lorentz@gmail.com>
Sun, 8 Jan 2012 11:24:29 +0000 (12:24 +0100)
committerBertrand Lorentz <bertrand.lorentz@gmail.com>
Sun, 8 Jan 2012 11:33:55 +0000 (12:33 +0100)
commitb780ebced90e5aae3464e16fb686f25ddd21fd9b
tree382c8870b6dbf60d414f060c2c5affd8c64bcbb2
parentb548c8ccfdd16e91135db90f25a9efe437a8f47f
Fix race condition when starting multiple instances (bgo#648522)

We were first only checking whether the DBus name had an owner, and
grabbing the name much later in the startup process. This created a race
condition, so two Banshee processes started at almost the same time
could both think they were the primary instance.

Add a DBusConnection.GrabDefaultName method which tries to grab the
default DBus name and returns whether we are the primary instance or
not. If DBus is not available we have to assume we're the primary
instance. Use that new method in Booter.
src/Clients/Booter/Booter/Entry.cs
src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs