Port keystates to use QtWayland's generator
Needs ReviewPublic

Authored by apol on Jul 10 2019, 1:19 AM.

Details

Reviewers
None
Group Reviewers
KWin
Summary

Saves us some of the boilerplate code

Test Plan

The plasmoid still works

Diff Detail

Repository
R127 KWayland
Branch
arcpatch-D22362
Lint
Lint SkippedExcuse: x
Unit
No Unit Test Coverage
Build Status
Buildable 17546
Build 17564: arc lint + arc unit
apol created this revision.Jul 10 2019, 1:19 AM
Restricted Application added a project: Frameworks. · View Herald TranscriptJul 10 2019, 1:19 AM
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald Transcript
apol requested review of this revision.Jul 10 2019, 1:19 AM
apol updated this revision to Diff 61478.Jul 10 2019, 1:21 AM

--debug

apol added a comment.Jul 10 2019, 1:22 AM

As discussed in the Plasma sprint.
Removes some boilerplate code and turns it into C++ overrides.

As some background:

At a recent Plasma sprint, one comment was that adding protocols to KWayland was an absolute pain involving writing a tonne of boiler plate. My experience adding a protocol to Qt was relatively painless.

We said we'd try on a really simple protocol.

IMHO this looks encouraging.

Obviously having a mix of styles isn't great, but something has to be first.


One thing we need to resolve is

QtWaylandServer::org_kde_kwin_keystate
will call init which will call wl_global_create

Global::Private will call wl_global_create

Calling that twice is wrong.

apol added a comment.Thu, Oct 10, 10:29 PM

As some background:

At a recent Plasma sprint, one comment was that adding protocols to KWayland was an absolute pain involving writing a tonne of boiler plate. My experience adding a protocol to Qt was relatively painless.

We said we'd try on a really simple protocol.

IMHO this looks encouraging.

Obviously having a mix of styles isn't great, but something has to be first.


One thing we need to resolve is

QtWaylandServer::org_kde_kwin_keystate

will call init which will call wl_global_create

Global::Private will call wl_global_create

Calling that twice is wrong.

I was looking into this and realised it's not really easy to solve. The reason is that KWayland::Server::Global was designed to be able to expose the wl_global as if it was useful, but this is something you never do. The wl_global is private on the generated code so we can't access it. I'll provide a workaround for now to keep the conversation alive, but I'd say at least operator wl_global*(); should get deprecated.

apol updated this revision to Diff 67670.Thu, Oct 10, 10:51 PM

Just don't use KWayland::Global

Lets generated code do its thing already

apol updated this revision to Diff 67671.Thu, Oct 10, 11:19 PM

Unnecessary change