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

Tanu Kaskinen tanuk at iki.fi
Wed Nov 1 11:50:02 UTC 2017


On Tue, 2017-10-31 at 16:20 +0100, Colin Leroy wrote:
> On Mon, 30 Oct 2017 16:15:52 +0200, Tanu Kaskinen <tanuk at iki.fi> wrote:
> > Why does the PavuApplication need to be wrapped in a RefPtr?
> 
> To build :)
> This is apparently inherent to overloading Gtk::Application as I get
> compilation errors without it. (I find cpp errors very hard to read but
> this is rather clear that it's a template thing).

I think your problem was that the PavuApplication constructor was
declared as protected, so calling it from main() was not allowed. I
made a patch that removes the RefPtr wrapping.

> > > +    add_window(*pavucontrol_window);
> > > +    [...]
> > > +    auto windows = get_windows();
> > > +
> > > +    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've made it a member.
> I still have to call Gtk::Application->add_window() (or the GtkApp
> doesn't correctly initialize - GtkApps need at least one window
> registered). I don't use get_windows() anymore though.
> 
> Sidenote: I still have to make an ugly (MainWindow*) cast, because I
> can't use MainWindow in pavucontrol.h as I would have to include
> mainwindow.h which already includes pavucontrol.h. (Which proves
> there's a responsabilities separation issue).

I made a patch for the cast.

> > 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? 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've added comments on every Gtk::Application aspect of the thing. I
> hope they make things more clear.

Thanks! I applied your patch now.

-- 
Tanu

https://www.patreon.com/tanuk


More information about the pulseaudio-discuss mailing list