Review Request 126101: allow loading backends in-process

Sebastian Kügler sebas at kde.org
Fri Nov 20 00:16:44 UTC 2015


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

(Updated Nov. 20, 2015, 12:16 a.m.)


Review request for Plasma, Solid, Àlex Fiestas, Aleix Pol Gonzalez, Daniel Vrátil, and Martin Gräßlin.


Changes
-------

Thanks for reviewing again, latest changes address the remaining comments.

Most interesting change is that the plugin loading argument has moved from ConfigOperation into BackendManager, as suggested.

The code is now a bit more agressive towards switching backends, shutdownBackend is run whenever the mode or the backend changes. I've added there that in case we get a new backend requested, and the new backend would be loaded while the old isn't shut down, we run shutdownBackend() anyway. We know it's the right thing to do here, so instead of warning, or bailing out, we shutdown first, and then continue loading the new backend freshly.

make test passes entirely, though I get dbus timeouts in testconfigmonitor when running it directly from the commandline. It may (or may not) be related to the backendlauncher not shutting down correctly, but I haven't figured out if that's a new problem, or specific to a certain setup. I'll give this another good round of real world testing before pushing.


Repository: libkscreen


Description (updated)
-------

This patchset adds in-process operation to libkscreen

purpose:
- allow easier debugging
- for some backends (qscreen, upcoming kwayland) the out of process operation is not necessary since these backends are well-shielded

This implementation is backwards compatible and opt-in for running setups.

If the user exports KSCREEN_BACKEND_INPROCESS=1 before running, all operations will be done in process. Otherwise, the out-of-process mode is used.

Changes revolve around the ConfigOperations, the BackendManager (which "factories" the backends, either in- or out-of-process), and the plugin loading logic

Autotests should cover all the cases (and actually a few currently unsupported ones, such as using different backends in the same process).

Details on performance, etc.: http://vizzzion.org/blog/2015/11/wayland-and-libkscreen-benchmarks/


Diffs (updated)
-----

  CMakeLists.txt 86a0965 
  autotests/CMakeLists.txt 69af7f0 
  autotests/testconfigmonitor.cpp a051226 
  autotests/testinprocess.cpp PRE-CREATION 
  autotests/testqscreenbackend.cpp da4dbae 
  autotests/testscreenconfig.cpp ecbcedf 
  autotests/testxrandr.cpp b9b838a 
  backends/fake/fake.cpp 60264dd 
  src/backendlauncher/backendloader.cpp 52051df 
  src/backendmanager.cpp ca9c746 
  src/backendmanager_p.h c6418e2 
  src/config.cpp 75d947d 
  src/configmonitor.h b6f1189 
  src/configmonitor.cpp a14bc70 
  src/configoperation.h 2405d79 
  src/configoperation.cpp 87fe141 
  src/configoperation_p.h afdc462 
  src/getconfigoperation.h c85bfaa 
  src/getconfigoperation.cpp 22f92b4 
  src/output.cpp bd381fa 
  src/setconfigoperation.h 020a990 
  src/setconfigoperation.cpp 6ea944f 

Diff: https://git.reviewboard.kde.org/r/126101/diff/


Testing
-------

Added a ton of autotests, made sure all existing ones pass.

tried "KSCREEN_BACKEND_INPROCESS=1 kcmshell5 kscreen", all working as expected.


Thanks,

Sebastian Kügler

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20151120/843506d9/attachment-0001.html>


More information about the Plasma-devel mailing list