Commit Graph

111 Commits

Author SHA1 Message Date
Christian Hergert
4be889b608 display-picture: remove deprecated allocation API usage 2023-05-17 13:48:21 -07:00
Christian Hergert
cae805a728 resizer: only branch when non-NULL
My previous commit broke this, which is needed because we always return
FALSE when either are NULL.
2023-05-17 13:37:33 -07:00
Christian Hergert
69dfaddb9d resizer: various code-style cleanup
Related !13
2023-05-17 13:36:11 -07:00
Christian Hergert
6a024f0e5d Merge branch 'bilelmoussaoui/reconfigure' into 'main'
display: Reconfigure screen when size change

See merge request chergert/libmks!13
2023-05-17 20:11:49 +00:00
Bilal Elmoussaoui
c259212be5 dmabuf: Properly propagate damage area
The current approach makes use of
- A tiled rendering to work around gdk_texture_diff only doing pointer
comparaison
- Assumes that we would only recieve a scanout cmd followed by multiple
flush ones

In reality, with virtio-gpu at least, the scanout cmd is always
submitted followed by a flush one containing the damaged region.

With the assumption currently made, we end up creating a new paintable
for every scanout cmd causing a full redraw instead
of only redrawing the damaged areas.
Isntead we create the paintable once and call import whenever
we receive a flush cmd (UpdateDMABUF) so we can properly
pass the damage area when creating a GdkGLTexture making
the tiled rendering no longer needed.
2023-05-17 13:08:37 -07:00
Bilal Elmoussaoui
51f8615099 build: Set the pkg-config name when generating GIR
Should help gi-docgen figure out the pkg-config name to display in the
docs
2023-05-14 19:03:01 +02:00
Bilal Elmoussaoui
2636c9e1a9 build: Various fixes to auto generated sources
Needed to fix the build when GTK is also built from a subproject
2023-05-14 19:03:01 +02:00
Bilal Elmoussaoui
a804f766f9 display: Reconfigure screen when size change
Otherwise the VM would have no idea about the size of the target widget.
To do so, we introduce a ScreenResizer object that remembers the previous
screen attributes as well the next attributes to configure.
Taking care of scheduling resize operations and avoids submitting
the same attributes twice.
2023-05-10 00:32:35 +02:00
Christian Hergert
cd7825d9d5 build: allow -Dtracing for more logging information 2023-04-20 14:00:04 -07:00
Christian Hergert
15e6667292 Merge branch 'add-vala-support' into 'main'
Add VAPI (vala) support

See merge request chergert/libmks!11
2023-04-20 20:46:21 +00:00
Felipe Borges
14c368d9e7 Add VAPI (vala) support 2023-04-17 12:46:26 +02:00
Bilal Elmoussaoui
26f4b72708 display-picture: Don't compute min-width/min-height
They are not useful for us as we would like the user to be able to
shrink the picture.
It is a leftover of migrating from GtkPicture
2023-04-13 15:13:27 +02:00
Bilal Elmoussaoui
b4fade7fe1 cleanup: Drop useless conditions 2023-04-13 15:04:40 +02:00
Christian Hergert
188c63a183 Merge branch 'bilelmoussaoui/fix-focus' into 'main'
display: Grab focus on MksDisplayPicture

See merge request chergert/libmks!8
2023-04-04 03:28:32 +00:00
Christian Hergert
02edb73d2a Merge branch 'bilelmoussaoui/expose-translate-keycode' into 'main'
keyboard: Expose keycode translation helper

See merge request chergert/libmks!7
2023-04-04 03:26:14 +00:00
Christian Hergert
5d1f5818c9 Merge branch 'bilelmoussaoui-main-patch-70944' into 'main'
display-picture: Fix keyval value

See merge request chergert/libmks!6
2023-04-04 03:23:29 +00:00
Christian Hergert
8e7702012a Merge branch 'bilelmoussaoui/fix-session-ctor' into 'main'
session: Fix the display dbus path

See merge request chergert/libmks!5
2023-04-04 03:23:13 +00:00
Bilal Elmoussaoui
5783b6a8ce display: Grab focus on MksDisplayPicture 2023-04-03 22:17:31 +02:00
Bilal Elmoussaoui
57370d5a73 keyboard: Expose keycode translation helper
Useful for exposing keyboard shortcuts triggers on the UI
Similar to what Boxes does for Ctrl+Shift+F
2023-04-03 17:33:11 +02:00
Bilal Elmoussaoui
df42bbb20e display-picture: Fix keyval value 2023-04-03 13:31:33 +00:00
Bilal Elmoussaoui
266f1ae834 session: Fix the display dbus path
As that is what implements the ObjectManager interface
2023-03-31 10:57:10 +02:00
Bilal Elmoussaoui
c7ba1c0104 build: Add an option to disable introspection 2023-03-30 13:15:00 +02:00
Bilal Elmoussaoui
89d37ada0d lib: Add missing headers & fix enums install dir 2023-03-29 13:09:33 +02:00
Christian Hergert
1d68a4d8f4 lib: wire up various signal handlers for audio out listener 2023-03-02 20:38:30 -08:00
Christian Hergert
378c9614ed lib: use source for cairo fill operator 2023-03-02 17:55:30 -08:00
Christian Hergert
088e1b5ce4 keyboard: add tracing macros 2023-02-28 18:57:17 -08:00
Christian Hergert
b3a0a4028c lib: add tracing for MksMouse 2023-02-28 12:49:37 -08:00
Christian Hergert
edd88dcec3 util: add simple tracing macros 2023-02-27 20:23:25 -08:00
Christian Hergert
e4d089fb52 util: fix typo 2023-02-27 20:16:17 -08:00
Christian Hergert
1d51bffe8f lib: implement basics for audio out stream 2023-02-27 18:44:42 -08:00
Christian Hergert
ec60165c70 lib: ensure UnixFDList availability for AudioIn/Out 2023-02-27 18:43:39 -08:00
Christian Hergert
98032981cd util: add socketpair GDBusConnection helper 2023-02-26 10:57:50 -08:00
Christian Hergert
294e01836d speaker: add autoptr cleanup func 2023-02-26 10:57:33 -08:00
Christian Hergert
39a0bb2658 lib: add MksSpeaker
This isn't attached to AudioOut interface yet, but starts on the API to
be defined for that.
2023-02-18 09:44:21 -08:00
Christian Hergert
af901239d0 lib: remove unused typedefs 2023-02-17 16:43:58 -08:00
Christian Hergert
826967840a lib: handle NULL display during gir generation 2023-02-17 16:40:53 -08:00
Christian Hergert
04e2bf0b00 lib: don't propagate when creating inhibitor 2023-02-17 16:30:46 -08:00
Christian Hergert
a12ee6da68 build: add -lm to library 2023-02-17 16:27:53 -08:00
Christian Hergert
4c7711823a lib: make cairo formats conditional 2023-02-17 16:27:36 -08:00
Christian Hergert
8ed9c7eedc lib: dont set initial cursor to none
Honestly, Qemu *probably* should be calling into us with the cursor after
we connect to get this right, but it doesn't which leaves the user with a
bit of an issue if there is no active cursor.
2023-02-17 16:02:16 -08:00
Christian Hergert
f5935b38cf lib: handle any potential changes to type 2023-02-17 15:59:48 -08:00
Christian Hergert
459cb173b0 lib: add MksDisplay:ungrab-trigger
This allows setting a customizable trigger which may be used to ungrab
the display. Currently, the default is ctrl+alt+g and the only thing that
will be released is the shortcut inhibition.
2023-02-17 15:50:02 -08:00
Christian Hergert
1a4bcb8c31 lib: release inhibitor with dispose 2023-02-17 15:38:06 -08:00
Christian Hergert
3794f43ee1 lib: acquire inhibitor on first mouse-press
This will allow us to receive input like Super for the activities overview
while the widget is active.

We still need a way to release the grab, but that will come soon.
2023-02-17 15:34:36 -08:00
Christian Hergert
edfe01bf99 lib: add inhibitor helper
This is an object which is meant to be acquired/released in response to
user input. Currently, it will inhibit the shortcuts in the display server
if possible.

Some additional things may be added eventually like relative pointers or
similar (by grabbing pointer input).
2023-02-17 15:33:40 -08:00
Christian Hergert
87a800510b lib: use GDK_SCROLL_SMOOTH to enumlate wheel scroll
It's really annoying when a touchpad doesn't work at all in a MKS session.
So instead of doing nothing, at least try to send a wheel event so that
some amount of scroll may occur.

Eventually, we need a real touchpad D-Bus interface to deliver events.
2023-02-17 11:49:33 -08:00
Christian Hergert
d0909732f4 lib: add MksDisplayPicture
This is a child widget to the MksDisplay which contains just the paintable
region of the remote screen. Doing so allows us to avoid having to handle
crossing events carefully for things like cursors.

Instead, now the MksDisplay calculates the area for the picture and
allocates it there. The MksDisplayPicture will always snapshot the
paintable using the full area it has been allocated.

Event processing can also largely move into the Picture widget which
simplifies bounds checking.
2023-02-17 11:40:47 -08:00
Christian Hergert
24dafbe067 lib: handle GL textures with y0 at top 2023-02-15 19:40:48 -08:00
Christian Hergert
5657997f4a lib: set controller to capture phase
Just so we don't chance it and loose events to GTK.
2023-02-15 19:22:57 -08:00
Christian Hergert
d533773cf7 lib: fix absolute x,y mouse position 2023-02-15 18:02:51 -08:00