Sam`s GDK-Mir Backend

Daniel van Vugt daniel.van.vugt at canonical.com
Thu Aug 22 05:35:46 UTC 2013


Looking good. And for those who might be wondering, I believe that GTK 
without a theme loaded is meant to look like that :)


On 22/08/13 12:57, Leslie Zhai wrote:
> Hi Sam, gtk3-demo WORKED :)
>
> But there is still some bug need to fix, such as Invalid rectangle region.
>
> Leslie
>
>> That looks like the fix I applied. Have you tried stepping through the
>> library to make sure it was conditionally compiled in?
>>
>>
>> On Thu, Aug 22, 2013 at 11:34 AM, Leslie Zhai <xiangzhai83 at gmail.com
>> <mailto:xiangzhai83 at gmail.com>> wrote:
>>
>>     Hi Sam,
>>
>>     Did you fixed the gdkdisplaymanager without mir bug like this?
>>
>>     diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c
>>     index 075f507..84c07a4 100644
>>     --- a/gdk/gdkdisplaymanager.c
>>     +++ b/gdk/gdkdisplaymanager.c
>>     @@ -60,6 +60,10 @@
>>      #include "wayland/gdkprivate-wayland.h"
>>      #endif
>>
>>     +#ifdef GDK_WINDOWING_MIR
>>     +#include "mir/gdkprivate-mir.h"
>>     +#endif
>>     +
>>      /**
>>       * SECTION:gdkdisplaymanager
>>       * @Short_description: Maintains a list of all open GdkDisplays
>>     @@ -270,6 +274,9 @@ static GdkBackend gdk_backends[] = {
>>      #ifdef GDK_WINDOWING_WAYLAND
>>        { "wayland",  _gdk_wayland_display_open },
>>      #endif
>>     +#ifdef GDK_WINDOWING_MIR
>>     +  { "mir",      _gdk_mir_display_open },
>>     +#endif
>>      #ifdef GDK_WINDOWING_X11
>>        { "x11",      _gdk_x11_display_open },
>>      #endif
>>
>>     I using GDK_BACKEND=mir GTK_CSD=1 ./gtk/examples/hello-world
>>     But still (lt-hello-world:6443): Gtk-WARNING **: cannot open
>>     display: :0
>>
>>     I built the gtk ./autogen.sh --enable-mir-backend
>>     --disable-wayland-backend ...
>>     Did you disable  the wayland backend? it is useless.
>>
>>     Leslie
>>
>>>     Hey Leslie,
>>>
>>>     I'm currently running it natively - you need to explicitly tell
>>>     GDK to use the mir backend.
>>>
>>>     ./autogen.sh --enable-mir-backend ...
>>>     GDK_BACKEND=mir GTK_CSD=1 ./gtk/examples/hello-world
>>>
>>>     There was a bug for a little bit where the backend stub to pick
>>>     the mir backend in gdkdisplaymanager wasn't checked in to source
>>>     control, but I've fixed that now.
>>>
>>>     I've (mostly) fixed the display lag problem. Part of that is a
>>>     fix to the mir compositor so you'll need a recent (955+) revision
>>>     of that. There is still a condition where frame swaps can get out
>>>     of sync with input events which I'll look into soon.
>>>
>>>     Sam.
>>>
>>>
>>>     On Thu, Aug 22, 2013 at 11:17 AM, Leslie Zhai
>>>     <xiangzhai83 at gmail.com <mailto:xiangzhai83 at gmail.com>> wrote:
>>>
>>>         Hi Sam,
>>>
>>>         I came back to "just for fun open source project" from
>>>         business development.
>>>
>>>         I running Mir natively described in doc/using_mir_on_pc.md
>>>         <http://using_mir_on_pc.md>
>>>
>>>             $ sudo mir_demo_server
>>>             <Ctrl+Alt+F2> - log in to VT 2
>>>             $ sudo chmod 777 /tmp/mir_socket
>>>             $ gtk/examples/hello-world
>>>             <Ctrl+Alt+F1> - switch back to Mir
>>>
>>>         But (lt-hello-world:6443): Gtk-WARNING **: cannot open
>>>         display: :0
>>>
>>>         So did you test the GDK Mir backend using Mir natively way?
>>>         or whether directly using XMir?
>>>
>>>         Leslie
>>>
>>>>         Hey Leslie,
>>>>
>>>>         Just wanted to update you on this - I've got a very (basic)
>>>>         version of gtk+ up and running. Display, mouse and key
>>>>         events should work to a limited extent. There is no support
>>>>         for key modifiers or more complicated keys yet. I've also
>>>>         disabled support for crossing events as Mir seems to send
>>>>         mir_motion_event_hover_exit as soon as a mouse button is
>>>>         pressed, which tends to confuse the toolkit (as I've
>>>>         experienced in the past ...). I've also noticed that the
>>>>         display lags a bit behind the input - I suspect this is
>>>>         because frame clock support is also unimplemented, so we are
>>>>         probably doing a buffer swap at the wrong point in the paint
>>>>         cycle.
>>>>
>>>>         https://github.com/smspillaz/gtk/commits/wip/mir
>>>>
>>>>         Anyways, its something to look at (or submit pull requests!)
>>>>         if you want.
>>>>
>>>>         Thanks for doing the initial work on this.
>>>>
>>>>         Sam.
>>>>
>>>>
>>>>         On Thu, Aug 8, 2013 at 7:32 PM, Leslie Zhai
>>>>         <xiangzhai83 at gmail.com <mailto:xiangzhai83 at gmail.com>> wrote:
>>>>
>>>>             Hi Sam,
>>>>
>>>>             You are welcome :) OK, I will git push to
>>>>             https://github.com/gnome/gtk
>>>>
>>>>>             Hi Leslie,
>>>>>
>>>>>             Excellent. What I'd suggest doing instead of creating a
>>>>>             new repo is instead creating a fork of
>>>>>             https://github.com/gnome/gtk so that changes will be
>>>>>             tracked on head (and not on a divergent branch).
>>>>>
>>>>>             I haven't pushed my changes anywhere primarily because
>>>>>             there's nothing particularly interesting  - just gdk
>>>>>             with a copypasted wayland backend with s/wayland/mir at
>>>>>             the moment. It might make sense for me to work on your
>>>>>             branch directly.
>>>>>
>>>>>             As for cursor and device support - I don't think that
>>>>>             this is particularly fatal to any kind of Mir work. It
>>>>>             should be possible to just function as though there is
>>>>>             only a single input device at the moment. Cursor
>>>>>             support can probably also easily be a no-op. I don't
>>>>>             think there is a case in gdk for retrieving the cursor
>>>>>             image from the server.
>>>>>
>>>>>             I'll look into it a bit more later tonight. Thanks :)
>>>>>
>>>>>             Sam.
>>>>>
>>>>>
>>>>>             On Thu, Aug 8, 2013 at 2:14 PM, Leslie Zhai
>>>>>             <xiangzhai83 at gmail.com <mailto:xiangzhai83 at gmail.com>>
>>>>>             wrote:
>>>>>
>>>>>                 Hi Sam, github repos
>>>>>                 https://github.com/xiangzhai/gtk-mir
>>>>>                 May I know your github link :)
>>>>>
>>>>>
>>>>>                     Sam,
>>>>>
>>>>>                     I paused due to there is no cursor nor device
>>>>>                     in Mir concept, but Wayland has it.
>>>>>                     I want to team up and work on this together :)
>>>>>                     I can learn a lot of things from you and other
>>>>>                     Linux geeks!
>>>>>
>>>>>                     1. yes, there is only cairo-gl, but we could
>>>>>                     follow the Mir client examples about EGL
>>>>>                     2. yes, we need to remove all Wayland code :)
>>>>>                     3. ok, I will create the repos under my github
>>>>>                     https://github.com/xiangzhai
>>>>>
>>>>>                         Hey Leslie,
>>>>>
>>>>>                         I saw on mir-devel that you were hacking on
>>>>>                         a mir gdk backend. I actually started
>>>>>                         looking into this last night and then
>>>>>                         noticed just now that you've started doing
>>>>>                         this. (Actually, I took the same approach
>>>>>                         of copypasting the wayland backend).
>>>>>
>>>>>                         Were you still working on this. I was
>>>>>                         wondering if you wanted to team up and work
>>>>>                         on this together.
>>>>>
>>>>>                         Some open questions:
>>>>>
>>>>>                         1. I've noticed that you're creating an EGL
>>>>>                         context on the mir surface as soon as its
>>>>>                         created. This seems strange to me as gdk
>>>>>                         has no egl rendering backend (asides from
>>>>>                         perhaps cairo-gl, which is not enabled by
>>>>>                         default). Would it be easier to
>>>>>                         software-backed buffers for this purpose
>>>>>                         (similar to wayland?)
>>>>>                         2. There are some references to wayland
>>>>>                         structs still in the code, I imagine these
>>>>>                         should be removed
>>>>>                         3. The code is hosted on launchpad. Would
>>>>>                         it be easier to host it on github for
>>>>>                         easier mergability back into upstream gdk?
>>>>>
>>>>>                         Sam.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>             --
>>>>>             Sam Spilsbury
>>>>
>>>>
>>>>
>>>>
>>>>         --
>>>>         Sam Spilsbury
>>>
>>>
>>>
>>>
>>>     --
>>>     Sam Spilsbury
>>
>>
>>
>>
>> --
>> Sam Spilsbury
>
>
>



More information about the Mir-devel mailing list