Sam`s GDK-Mir Backend
Leslie Zhai
xiangzhai83 at gmail.com
Thu Aug 22 05:47:57 UTC 2013
Hi Daniel,
LOOOOOOONG time no see, I came back to "just for fun" world from BIZ DEV
shortly :|
If there is mir-recordmydesktop or screenshot client demo, I will not
need to take the photoshot with my mobile phone :)
Leslie
Linux Deepin Business Developer
> 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