internal Registry(bool startLoop)
: base("org.a11y.atspi.Registry")
{
lock (sync) {
if (instance != null)
throw new Exception ("Attempt to create a second registry");
instance = this;
}
bus = GetAtspiBus ();
if (bus == null)
bus = Bus.Session;
ObjectPath op = new ObjectPath ("/org/a11y/atspi/registry");
proxy = Registry.Bus.GetObject<IRegistry> ("org.a11y.atspi.Registry", op);
eventListeners = new Dictionary<string, int> ();
RegisterEventListener ("Object:ChildrenChanged");
RegisterEventListener ("Object:StateChanged");
RegisterEventListener ("Object:PropertyChange");
applications = new Dictionary<string, Application> ();
applications [name] = this;
desktop = new Desktop (this);
applications [desktop.GetAlternateBusName ()] = this;
accessibles [SPI_PATH_ROOT] = desktop;
busProxy = Bus.GetObject<IBus> ("org.freedesktop.DBus", new ObjectPath ("/org/freedesktop/DBus"));
PostInit ();
desktop.PostInit ();
if (DeviceEventController.Instance == null)
new DeviceEventController ();
if (startLoop && loopThread == null) {
loopThread = new Thread (new ThreadStart (Iterate));
loopThread.IsBackground = true;
loopThread.Start ();
}
}