> On Nov. 25, 2014, 11:56 a.m., Aleix Pol Gonzalez wrote:
> > shell/shellcorona.cpp, line 328
> > <https://git.reviewboard.kde.org/r/121240/diff/1/?file=329712#file329712line328>
> >
> >     Are you sure this is correct?
> >     
> >     This was done because at some point Configuration::primaryOutput and 
> > Output::isPrimary were not consistent and this was a way to make it 
> > consistent.
> 
> Daniel Vrátil wrote:
>     The behaviour has changed a little with the new API (mostly because the 
> way Outputs are updated have changed). Now Configuration::primaryOutput is 
> changed after all Outputs have been updated. That's why this patch also 
> switches from listening to Output::isPrimaryChanged to 
> Configuration::primaryOutputChanged.
>     
>     The problem with reacting to Output::isPrimaryChanged is, that you will 
> get the signal always twice: once for the output that is set to be primary, 
> and once for the output where primary flag is unset. If the order is first 
> unset, then set, then everything is OK, but if the order happens to be that 
> first you get signal from the output that was set a primary and then from the 
> one that was unset from primary, stuff gets broken and you start hitting 
> various asserts in the codepath.
>     
>     By reacting to Config::primaryOutputChanged, you are sure that all the 
> changes have already been applied (including primary), and that calling 
> Config::primaryOutput gives you what you expect.

Ok, merge the patch, I'll keep an eye for regressions.


- Aleix


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121240/#review70911
-----------------------------------------------------------


On Nov. 25, 2014, 9:18 a.m., Daniel Vrátil wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/121240/
> -----------------------------------------------------------
> 
> (Updated Nov. 25, 2014, 9:18 a.m.)
> 
> 
> Review request for Plasma.
> 
> 
> Repository: plasma-workspace
> 
> 
> Description
> -------
> 
> This patch ports ShellCorona and PanelView to new KScreen API. The new API is 
> completely asynchronous and is using shared pointers. The internals have also 
> undergone some major changes, but they don't directly affect Plasma.
> 
> Additionally to the port, this patch also changes the way ShellCorona reacts 
> to primary screen changes: instead of listening to Output::isPrimaryChanged 
> on each output, it listens now to Config::primaryOutputChanged. The reason is 
> that when some output is set as primary, the signal is emitted right away. 
> This can happen before the old primary is unset though, which then causes 
> crashes in screenInvariants() in some situations/configurations. Listening to 
> Config::primaryOutputChanges ensures that Plasma reacts only once, and only 
> when the Config is consistent.
> 
> The new KScreen API is available in dev/redesign branches in libkscreen.git. 
> I'll merge the branch to "frameworks" branch once this review is approved in 
> order not to break build.
> 
> 
> Diffs
> -----
> 
>   shell/panelview.cpp 0dc5740 
>   shell/shellcorona.h 5e97e02 
>   shell/shellcorona.cpp 0da789f 
> 
> Diff: https://git.reviewboard.kde.org/r/121240/diff/
> 
> 
> Testing
> -------
> 
> Been using this patch and the new KScreen for couple weeks now, works better 
> than the old one.
> 
> 
> Thanks,
> 
> Daniel Vrátil
> 
>

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to