[pulseaudio-discuss] [PATCH] pavucontrol: implement single-launch

Colin Leroy colin at colino.net
Mon Oct 30 19:44:18 UTC 2017


On 30 October 2017 at 16h15, Tanu Kaskinen wrote:

Hi, 

> This is a weird function. [...]
> I think it would be better if this function was only called when the
> caller really wants to apply the heuristics.

I'll update the patch to do that.
Below are answers to the rest of your questions:

> > +Glib::RefPtr<PavuApplication> PavuApplication::create() {
> > +    return Glib::RefPtr<PavuApplication>(new PavuApplication());
> > +
> > +}  
> 
> Why does the PavuApplication need to be wrapped in a RefPtr?

I'm not sure it needs. I used the same general architecture as the
GtkMM Gtk::Application example.

> > +    if (windows.size() > 0) {
> > +        pavucontrol_window =
> > dynamic_cast<Gtk::Window*>(windows[0]);
> > +    }  
> 
> This seems a bit ugly. Couldn't the main window be a member variable
> of PavuApplication?

I'll try that. 

> > +
> > +    if (pavucontrol_window == NULL) {
> > +        pavucontrol_window = create_window();
> > +    } else if (tab != -1) {
> > +        ((MainWindow *)pavucontrol_window)->selectBestTab(tab);
> > +    }
> > +
> > +    pavucontrol_window->present();
> > +}  
> 
> This is probably part of the "switch tab if already running" logic,
> but I don't understand how that works in practice. If there's already
> one instance running, how does the tab index get passed from the new
> process to the old one?

We're already in the first existing process here. I think the second
process sends a message to the first one with argc and argv[]
somewhere. It then gets handled by the first process's on_command_line
callback. I'll have to check gtkApplication's doc to know how it's
communicating. I'm guessing Unix socket, at least on Unix systems.

> I'm sure I could figure it out from the GLib documentation, but
> there's apparently a lot of magic happening behind the scenes, and it
> would be good to have a comment that explains how the magic works.

I'll add that :)

Thanks!
-- 
Colin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20171030/5ffc1ae9/attachment.sig>


More information about the pulseaudio-discuss mailing list