[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