Re: [Bluez-devel] [PATCH] Make BluetoothClient work on all adapters

Marcel Holtmann
2007-07-25T07:53:42Z

Hi Bastien,

> > > > > However this includes that we have to monitor if the default adapter
> > > > > changes or one adapter gets removed while being in the adapter selector
> > > > > widget or device selector widget.
> > > >
> > > > Fair enough, I knew this would be a sticky point. I'm trying to fix it
> > > > up so that we use the default adapter by default with "NULL" passed as
> > > > the adapter.
> > >
> > > Here goes. This should correctly kill the disco on the old default
> > > adapter and re-enable it on the new default adapter, when the default
> > > adapter changes.
> >
> > you patch is wrong. You are messing up a DBusConnection object with the
> > BluetoothClient object in the callbacks of the DefaultAdapterChanged
> > signal.
> >
> > Actually I also don't like this way, we should store the default path
> > globally since that is what really counts. The tree storing all
> > information should be fully valid as long as we have an instance of the
> > BluetoothClient object and it can store the information about the
> > default adapter for us.
>
> The tree storing all information is still valid, there's no information
> there as to which is the default adapter.
>
> And to be able to use the default_adapter in the instances, you need to
> connect to the signal in the instances.

actually no. The information about the default adapter is global. I used
a global variable for now. If we need more specific information later or
wanna do some advanced magic, then we can fix that. For now storing the
default adapter in a global variable is fine.

> If you're not interested in stopping the existing discoveries on the
> default adapter when the default adapter changes, or transferring those
> discoveries to other devices, then it will be much easier.
>
> I'm not sure why we would carry on discovering devices if the model
> showing the devices is going away though.

I think that we should not. If the adapter goes away, then the discovery
should stop. However lets think about that later.

> So, the only thing I'm supposed to do, is change the model
> automatically, so that when we get the model for the default adapter,
> the model should change automatically. That will require the
> DefaultAdapterChanged signal to live in the instance, as in my patch, as
> globally, we don't have any knownledge of the instances.

We can have that in the model if we connect the proper signals to the
rows. That is the way I prefer, because the rest is messy and would need
DBusProxy for every instance. We don't since the model should be global
and actually valid for the lifetime of the application. However don't
worry. We can fix this up in the background. Once we have proper widgets
available, we don't have to expose the model to the applications anymore
(or at least less).