Re: Compiz is Dead - Beryl Lives Again? Enter - Northfield/Norwood
On Mon, Mar 25, 2013 at 02:14:23PM -0600, Scott Moreau wrote: > Sorry, I misspoke here. What I meant was, "This isn't about the > wayland core protocol, the core wayland developers have this part > covered. This is about raising the bar on the effects users expect to > see in a wayland compositor and thus, forwarding wayland indirectly as > Beryl did with Compiz." I'm not questioning your intentions. The effects they might have is what's worrying. --CJD pgpYxfof_a3FY.pgp Description: PGP signature ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Compiz is Dead - Beryl Lives Again? Enter - Northfield/Norwood
On Mon, Mar 25, 2013 at 12:59:22PM -0600, Scott Moreau wrote: > Hi Casey, > > On Mon, Mar 25, 2013 at 12:53 PM, Casey Dahlin wrote: > > On Mon, Mar 25, 2013 at 12:51:07PM -0600, Scott Moreau wrote: > >> Yes, there is no reason to fork libwayland. And I don't feel this is a > >> true fork, just a temporary rename to avoid the confusion it might > >> otherwise cause, remaining under the 'wayland' name. Wayland has been > >> in my github repo since I've uploaded it there. The only difference > >> now is, the name has been changed and an official fork announcement > >> has been made by request. > > > > ...ok. I'll leave how exactly that's less confusing as an exercise to the > > reader. > > > > Seriously, if you'd just forked Weston and left Wayland alone I'd be on your > > side. Even happy. This, however, is just making a political mess. > > > > --CJD > > I'm not sure where the confusion is. Northfield == Wayland but with a > few changes to wl_shell_surface interface for minimize/maximize/close > stuff. These changes are actually being discussed on the mailing list > for possible review and inclusion. Once these basic events/requests go > upstream, there will not be a need for northfield as a patched version > of wayland. In reality, this is just a project name that !wayland. The > need for this custom libwayland is only necessary until the new > protocol is pushed upstream at which point, this need should be > eliminated. > Shell surface was in weston for awhile. Why not just wl_new_shell_surface in your forked weston's protocol extensions? --CJD pgp0mCjWYAYf8.pgp Description: PGP signature ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Compiz is Dead - Beryl Lives Again? Enter - Northfield/Norwood
On Mon, Mar 25, 2013 at 12:51:07PM -0600, Scott Moreau wrote: > Yes, there is no reason to fork libwayland. And I don't feel this is a > true fork, just a temporary rename to avoid the confusion it might > otherwise cause, remaining under the 'wayland' name. Wayland has been > in my github repo since I've uploaded it there. The only difference > now is, the name has been changed and an official fork announcement > has been made by request. ...ok. I'll leave how exactly that's less confusing as an exercise to the reader. Seriously, if you'd just forked Weston and left Wayland alone I'd be on your side. Even happy. This, however, is just making a political mess. --CJD pgpoQatfjKE24.pgp Description: PGP signature ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Compiz is Dead - Beryl Lives Again? Enter - Northfield/Norwood
On Mon, Mar 25, 2013 at 12:41:59PM -0600, Scott Moreau wrote: > "The key point to understand is, that this is not a new protocol in its > own right. It *is* the wayland protocol, with a few minor additions > that make it possible to do new interesting things." Then don't fork the library. "A few minor additions" can exist outside the codebase. Hell, all of the shell protocol exists outside the wayland codebase. All of THE DRM CODE exists outside of the wayland codebase. If what you say is true about not forking the protocol then there is NO reason to fork libwayland. --CJD pgpvJG6pcKOvX.pgp Description: PGP signature ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Compiz is Dead - Beryl Lives Again? Enter - Northfield/Norwood
On Mon, Mar 25, 2013 at 02:43:27AM -0600, Scott Moreau wrote: > What Northfield *is not* > - A fork that will change protocol in fundamental ways that diverts > from the wayland EGL spec > - A project that aims to cause divisions in the community or the Linux > Desktop code > - A project that breaks core wayland protocol in unrepairable ways > - Diverting significantly from wayland > - An unfriendly 'takeover' > - Unnecessary > > The key point to understand is, that this is not a new protocol in its > own right. It *is* the wayland protocol, with a few minor additions > that make it possible to do new interesting things. It uses the same > EGL drivers in Mesa implementing the wayland-egl specification. This > will not change. Northfield will always use the same driver stack as > wayland. The difference is, that I now have the time to dedicate to > being a (hopefully very) responsive maintainer. > Then fork Weston and leave Wayland alone. More and different and better compositors have always been expected. Forking the wayland libs itself is just creating confusion and giving yourself the opportunity to break the protocol (which is extensible by default, and Weston already adds features to it). This is just making a mess after Canonical has already confused things with Mir. I'm already cringing at the thought of how Phoronix is going to cover this. --CJD pgpRbF6fvOr9s.pgp Description: PGP signature ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Weston SDK
On Thu, Feb 14, 2013 at 11:27:22AM -0500, Kristian Høgsberg wrote: > Hi, > > I made a little experiment last night: > > http://cgit.freedesktop.org/~krh/overlay-plugin > > It's an out-of-tree weston plugin. It's just a silly little overlay > that you can pop up with mod-space, but the interesting part here is > that it's building outside weston [1]. Current, that works by copying > the header files that defines the weston <-> plugins API, but I'd like > to start thinking about how to formalize this process. I don't think > it should be a big problem, it more or less boils down to: > > - Interface version in headers and at runtime > > - Header files installed in /usr/include/weston > > - pkg-config file This is all begging the question: what is the purpose of Weston. Graphics developers I talk to who I don't see on this list still refer to it as an "example compositor." They aren't awaiting a plugin API, they're awaiting a toolkit library so they can write their own compositors. Has this been miscommunicated? Because it increasingly seems like Weston is being prepared for actual use. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH wayland] protocol: Add wl_notification_daemon interface
On Sun, Jan 20, 2013 at 07:16:09PM +0100, Quentin Glidic wrote: > This interface is designed to be binded only once by a notification > daemon. > > Notification surfaces are special surfaces that the user should > always be able to see. The compositor is in charge of displaying > them to be visible without disturbing the user workflow. Is there a reason to do this in wayland protocol rather than the already established freedesktop method over DBus? --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [systemd-devel] [RFC] VTs for multiple seats
On Tue, Jul 10, 2012 at 10:03:37PM +0200, David Herrmann wrote: > On Tue, Jul 10, 2012 at 9:57 PM, Casey Dahlin wrote: > > On Tue, Jul 10, 2012 at 09:29:05PM +0200, David Herrmann wrote: > >> I don't think this is currently possible with the weston codebase, as > >> we require each compositor-backend to allow multiple surfaces. > > > > This part is all the conversation was about. > > Sorry, I meant we require each backend to have multiple _active_ > surfaces. This is not needed by the system-compositor as we only need > one active client. As I said all clients are fullscreen so we always > show only a single surface. Or did I miss something? > That's right. It also might sway the size argument back, as almost all of weston's window management and a lot of its input code is no longer necessary. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [systemd-devel] [RFC] VTs for multiple seats
On Tue, Jul 10, 2012 at 09:29:05PM +0200, David Herrmann wrote: > I don't think this is currently possible with the weston codebase, as > we require each compositor-backend to allow multiple surfaces. This part is all the conversation was about. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [systemd-devel] [RFC] VTs for multiple seats
On Tue, Jul 10, 2012 at 02:15:40PM -0400, Kristian Høgsberg wrote: > On Tue, Jul 10, 2012 at 12:22:13PM -0400, Casey Dahlin wrote: > > On Mon, Jul 09, 2012 at 06:17:13PM -0400, Kristian Høgsberg wrote: > > > No, wayland is the protocol, weston is the compositor building > > > toolkit. If you want an EGL compositor on KMS with evdev input, you > > > > But we don't want an EGL compositor. We want bare-bones KMS support. > > > > One of the things he mentioned was replacing plymouth with the system > > compositor. Do you really want to pack mesa into the initrd? > > > > The system compositor needs to provide a lightweight SHM-only graphics > > stack. It also needs to be able to provide the EGL stack /dynamically/ > > when the rest of userspace becomes available. > > Yes, so what you want is an EGL/KMS/evdev compositor that can start > out only using sw compositing. How is that *smaller* than weston > again? > Good point, I suppose. If you count the module that eventually gets plugged in to it, it would be a bit bigger. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [systemd-devel] [RFC] VTs for multiple seats
On Mon, Jul 09, 2012 at 06:17:13PM -0400, Kristian Høgsberg wrote: > No, wayland is the protocol, weston is the compositor building > toolkit. If you want an EGL compositor on KMS with evdev input, you But we don't want an EGL compositor. We want bare-bones KMS support. One of the things he mentioned was replacing plymouth with the system compositor. Do you really want to pack mesa into the initrd? The system compositor needs to provide a lightweight SHM-only graphics stack. It also needs to be able to provide the EGL stack /dynamically/ when the rest of userspace becomes available. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Wayland-Cint repo needs a new home
Hey all, So anyone that has been using it may have noticed that the Wayland Continuous Integration Repo hasn't been updated in several weeks. While some of that is my schedule tightening, the major blockage has been that I can't seem to push to gitorious anymore. I'm still not certain if this is a local issue with my copy of git or ssh or if it's on their end, but bottom line is, I'd like somewhere else to push the branch if possible. If anyone here uses it and knows of a place I could stash it I'd be appreciative. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: OpenGL in USB Display Devices under wayland
On Fri, Jun 22, 2012 at 10:29:04PM +0300, Pekka Paalanen wrote: > The trick is in the kernel DRM, which has to be able to deal with the > buffer and actually push it to the USB device. This may require special > allocation flags or somehow using the dmabuf infrastructure to allocate > the buffer, where the composite is drawn. Pretty sure it's possible right now to just copy the buffer out to normal userspace memory and then in to another DRM buffer. Not the quickest transition, but functional. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: OpenGL in USB Display Devices under wayland
On Fri, Jun 22, 2012 at 02:08:16PM -0400, rektide wrote: > How about this question: might Weston be adaptable to serve this use case? > What would be the > major changes to Weston to do this? What other subsystems would have to > change? > Right now wayland doesn't have a protocol to export much notion of what associates a card and a given output. Each DRM-capable device should expose a source of DRM buffers, and whichever source you use determines which card does the work during drawing. That's more or less in place in theory, though I don't think weston yet does multiple devices. When scanout happens, the client just says where they want their buffer mapped in compositor coordinate space. What card ends up scanning it out depends on what output is position to render that part of the coordinate space. You can get access to those coordinates, and you can pick a particular output and render fullscreen, but the assumption is kind of that any buffer could end up on any card. DRM buffers are card specific, so a compositor would naturally need to be prepared to shift all or part of a buffer to another card. So the only mechanism that is missing afaik is a way for a compositor to "recommend" a particular card for a particular output or for general use. That might have to go into mesa (mesa carries a bit of wayland protocol code, specifically the stuff around exposing buffer sources). As for the implementation in weston itself, it's just some coordination of buffer-to-buffer copying, and some intelligence about making card choices. I guess a slightly interesting bit is if you want the composition itself to happen on another card, which means the actual scanout buffer is allocated on the "wrong" card and then copied once after the windows are blitted on. Depending on how much shiny your window manager is performing that may or may not be worth doing, but it isn't hard to imagine how. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: OpenGL in USB Display Devices under wayland
On Fri, Jun 22, 2012 at 09:40:43PM +0530, Sannu K wrote: > After seeing the changes made in X server for offloading hardware > acceleration for USB display devices (displaylink and others), I am curious > to know about how Wayland takes care (if at all it does) of offloading > hardware acceleration to primary GPU. X server uses primary GPU (intel or > nvidia or ati) for 3D acceleration and just sends the scan out buffer to > USB display device. As far as I went through the architecture of wayland I > am not able to find where this fits in and how. Please provide some info on > how this is (or will be) done. > Wayland is just a protocol for exchanging buffers between apps and compositors. It pushes concerns like this onto libraries. Basically the client application just asks the compositor for a DRM buffer, and the compositor turns around and asks mesa for it, then hands it back to the application. Then the app uses mesa to draw on the DRM buffer without any intervention from the compositor at all. When its done it signals the compositor, which again uses mesa to render the buffer onto a master screen surface, then hands it to libdrm for scanout. The compositor itself isn't even part of wayland. Rather we expect each desktop environment will implement their own (though the workflow for 3D should be the same, and the weston example compositor demonstrates it if you need a working example). Wayland is just a tiny protocol to coordinate the buffer exchanges between the two apps. All of the graphics-related stuff is in mesa or libdrm. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: no package vpx found when building weston
On Thu, May 31, 2012 at 12:17:00PM -0400, dar...@chaosreigns.com wrote: > On 05/31, Prigent, Christophe wrote: > >I had an error when building Weston: "package requirements (cairo vpx) > >were not met: no package vpx found". > > > >The installation of libvpx0 and libvpx-dev from the synaptic package > >manager didn’t fix the problem. I found that there is no .pc file related > >to it inside /usr/share/pkgconfig. > > > >I’m working on Ubuntu 10.04. > > libvpx > > webm video encoding library required for Weston video capture. Fedora > 16 package works, Ubuntu Oneric package does not. > ^^ > > $ git clone http://git.chromium.org/webm/libvpx.git > > > - http://wayland.freedesktop.org/building.html as of three days ago. > Debating whether to add this to the cint repo. Fedora's OS packages already work, so I don't hit it. I'm guessing we don't integrate tightly enough with it to bother. In a short time it will probably work for everyone. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH] window: use libXcursor for loading pointer images
On Thu, May 03, 2012 at 01:39:38PM -0400, Kristian Høgsberg wrote: > etc. Obviously we don't want a hard libX11 dependency in weston, but > we could make a libwlcursor library that's just libXcursor with the > Xrender part split out. > I think if we're killing X dependencies, libwlkbmap would be the higher priority, since it seems to call for libX11 as well, and X11 macros, and xproto. Cairo and Mesa I believe also need them, but it might be possible to buildflag that away. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH 1/3] Change find_resource_for_surface to find_resource_for_client
On Fri, Apr 20, 2012 at 05:28:00PM +0300, Tiago Vignatti wrote: > On 04/20/2012 04:36 PM, Kristian Høgsberg wrote: > >No, it's an awkward five line helper function that I don't want to > >make public API. > > yes, I meant find_resource_for_client. Or is there some fancier way > you're planning to look through a list of resources? > It's an operation on a wl_list, with assumptions as to its properties. That's not really great API design. Not to mention that, IIRC the wayland library itself never exports any such list; they're all created within weston. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH] weston: update .gitignore files
Updates the .gitignore files for clients and tests to reflect a new test and a couple of renamed applications. Signed-off-by: Casey Dahlin --- diff --git a/clients/.gitignore b/clients/.gitignore index 5954a54..81dab06 100644 --- a/clients/.gitignore +++ b/clients/.gitignore @@ -10,15 +10,15 @@ libtoytoolkit.a resizor screenshooter-client-protocol.h screenshooter-protocol.c -screenshot simple-egl simple-shm simple-touch smoke tablet-shell-client-protocol.h tablet-shell-protocol.c -terminal view weston-desktop-shell weston-tablet-shell +weston-screenshooter +weston-terminal wscreensaver diff --git a/tests/.gitignore b/tests/.gitignore index e8df81b..3c957f4 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,2 +1,3 @@ matrix-test +setbacklight ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[ANNOUNCE] Wayland continuous integration repository
I've been working for a bit on an easier way to build Wayland from source, and more importantly, to get versions of all its dependencies that are known to work together. This is what I came up with :) I'm now offering for public consumption the Wayland continuous integration repository. Git information here: https://gitorious.org/wayland-cint/wayland-cint Basically, the idea is that all the packages mentioned in Wayland's build instructions[1] are checked out as submodules[2]. With a couple of commands all the source is checked out, and the Makefile in the root of the repo can build and clean them all together. Right now it has latest masters for everything as of last night. I'd like to do a 0.85 branch but we'd have to discuss policy on what dependencies get updated to what bar. I hope to add a script to the root of the repo soon with a few toys, but for right now it's a simple and easy way to get and build Wayland. Let me know what breaks! --CJD [1] http://wayland.freedesktop.org/building.html [2] http://book.git-scm.com/5_submodules.html ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Why the GTK+ wayland backend can't be enabled in linux distros, at all
On Sun, Mar 18, 2012 at 05:07:11PM -0400, dar...@chaosreigns.com wrote: > > I suppose E would be get Nouveau, the open source Nvidia driver, to work > well enough that the proprietary driver is completely unnecessary. That > seems very challenging, with the complete lack of help from Nvidia. In Fedora-land at least proprietary bits are officially not supported (it goes beyond just not shipping them) so they just might go for F) Enable it and tell proprietary software users where to stick it. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 2/2] Move old functionality of wl_shell into desktop_shell
wl_shell is gone since many compositors didn't use it, so we need to have desktop_shell pick up the slack. Signed-off-by: Casey Dahlin --- clients/Makefile.am|5 +- clients/simple-egl.c | 10 ++-- clients/simple-shm.c | 10 ++-- clients/terminal.c |6 +- clients/window.c | 41 +-- clients/window.h |5 ++- compositor/shell.c | 122 ++-- protocol/desktop-shell.xml | 59 + 8 files changed, 166 insertions(+), 92 deletions(-) diff --git a/clients/Makefile.am b/clients/Makefile.am index 8c30882..4a9f108 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -4,10 +4,10 @@ noinst_PROGRAMS = $(clients_programs) \ if BUILD_SIMPLE_CLIENTS simple_clients_programs = simple-egl simple-shm -simple_egl_SOURCES = simple-egl.c +simple_egl_SOURCES = simple-egl.c desktop-shell-protocol.c simple_egl_LDADD = $(SIMPLE_CLIENT_LIBS) -lm -simple_shm_SOURCES = simple-shm.c +simple_shm_SOURCES = simple-shm.c desktop-shell-protocol.c simple_shm_LDADD = $(SIMPLE_CLIENT_LIBS) endif @@ -33,6 +33,7 @@ AM_CPPFLAGS = \ libtoytoolkit_a_SOURCES = \ window.c\ + desktop-shell-protocol.c\ window.h\ cairo-util.c\ cairo-util.h diff --git a/clients/simple-egl.c b/clients/simple-egl.c index 95604de..06043bb 100644 --- a/clients/simple-egl.c +++ b/clients/simple-egl.c @@ -33,10 +33,12 @@ #include #include +#include "desktop-shell-client-protocol.h" + struct display { struct wl_display *display; struct wl_compositor *compositor; - struct wl_shell *shell; + struct desktop_shell *shell; struct { EGLDisplay dpy; EGLContext ctx; @@ -208,7 +210,7 @@ create_surface(struct window *window) window->native, surface_attribs); - wl_shell_set_toplevel(display->shell, window->surface); + desktop_shell_set_toplevel(display->shell, window->surface); ret = eglMakeCurrent(window->display->egl.dpy, window->egl_surface, window->egl_surface, window->display->egl.ctx); @@ -289,8 +291,8 @@ display_handle_global(struct wl_display *display, uint32_t id, if (strcmp(interface, "wl_compositor") == 0) { d->compositor = wl_display_bind(display, id, &wl_compositor_interface); - } else if (strcmp(interface, "wl_shell") == 0) { - d->shell = wl_display_bind(display, id, &wl_shell_interface); + } else if (strcmp(interface, "desktop_shell") == 0) { + d->shell = wl_display_bind(display, id, &desktop_shell_interface); } } diff --git a/clients/simple-shm.c b/clients/simple-shm.c index a93c203..404839a 100644 --- a/clients/simple-shm.c +++ b/clients/simple-shm.c @@ -32,10 +32,12 @@ #include #include +#include "desktop-shell-client-protocol.h" + struct display { struct wl_display *display; struct wl_compositor *compositor; - struct wl_shell *shell; + struct desktop_shell *shell; struct wl_shm *shm; uint32_t mask; }; @@ -104,7 +106,7 @@ create_window(struct display *display, int width, int height) WL_SHM_FORMAT_XRGB32, &window->data); - wl_shell_set_toplevel(display->shell, window->surface); + desktop_shell_set_toplevel(display->shell, window->surface); return window; } @@ -149,8 +151,8 @@ display_handle_global(struct wl_display *display, uint32_t id, if (strcmp(interface, "wl_compositor") == 0) { d->compositor = wl_display_bind(display, id, &wl_compositor_interface); - } else if (strcmp(interface, "wl_shell") == 0) { - d->shell = wl_display_bind(display, id, &wl_shell_interface); + } else if (strcmp(interface, "desktop_shell") == 0) { + d->shell = wl_display_bind(display, id, &desktop_shell_interface); } else if (strcmp(interface, "wl_shm") == 0) { d->shm = wl_display_bind(display, id, &wl_shm_interface); } diff --git a/clients/terminal.c b/clients/terminal.c index 092e069..d1fa87f 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -2053,12 +2053,12 @@ static int handle_bound_key(struct terminal *terminal, struct input *input, uint32_t sym, uint32_t time) { - struct wl_shell *shell; + struct w
[PATCH 1/2] Update .gitignores
--- clients/.gitignore|4 compositor/.gitignore |2 ++ 2 files changed, 6 insertions(+), 0 deletions(-) diff --git a/clients/.gitignore b/clients/.gitignore index 797e681..c369f6a 100644 --- a/clients/.gitignore +++ b/clients/.gitignore @@ -13,3 +13,7 @@ simple-shm smoke terminal view +desktop-shell-client-protocol.h +desktop-shell-protocol.c +desktop-shell +simple-client diff --git a/compositor/.gitignore b/compositor/.gitignore index 0231566..b63642f 100644 --- a/compositor/.gitignore +++ b/compositor/.gitignore @@ -5,3 +5,5 @@ meego-tablet-protocol.c meego-tablet-server-protocol.h xserver-protocol.c xserver-server-protocol.h +desktop-shell-protocol.c +desktop-shell-server-protocol.h -- 1.7.6 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH] Gut wl_shell and rename to wl_transfer_src
wl_shell isn't needed anymore since most of the experimental compositors seem to roll their own, often in support of different semantics. This rips everything out of it except create_drag and create_selection. When those two things get reworked we can kill this class entirely. We rename to wl_transfer_src for clarity. Signed-off-by: Casey Dahlin --- protocol/wayland.xml | 75 +- 1 files changed, 1 insertions(+), 74 deletions(-) diff --git a/protocol/wayland.xml b/protocol/wayland.xml index 48ba68a..88e4232 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -153,33 +153,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -187,53 +161,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 1.7.6 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH] Update mesa build instructions
On Mon, Jul 18, 2011 at 01:59:41PM -0400, Kristian Høgsberg wrote: > On Mon, Jul 18, 2011 at 2:02 AM, Casey Dahlin wrote: > > --- > > building.html | 20 +--- > > 1 files changed, 17 insertions(+), 3 deletions(-) > > Thanks, applied. > There's an error in it :( The second command in the 3 new prerequisite builds should be cd macros, cd glproto, and cd dri2proto respectively. Note they all say macros now. --CJD > > diff --git a/building.html b/building.html > > index f52f80e..1cced7b 100644 > > --- a/building.html > > +++ b/building.html > > @@ -85,11 +85,25 @@ Other dependencies are development packages of xcb-dri2 > > and xcb-xfixes. > > $ ./autogen.sh --prefix=$WLD --enable-nouveau-experimental-api > > $ make && make install > > > > + $ git clone git://anongit.freedesktop.org/git/xorg/util/macros > > + $ cd macros > > + $ ./autogen.sh --prefix=$WLD > > + $ make && make install > > + > > + $ git clone git://anongit.freedesktop.org/xorg/proto/glproto > > + $ cd macros > > + $ ./autogen.sh --prefix=$WLD > > + $ make && make install > > + > > + $ git clone git://anongit.freedesktop.org/xorg/proto/dri2proto > > + $ cd macros > > + $ ./autogen.sh --prefix=$WLD > > + $ make && make install > > + > > $ git clone git://anongit.freedesktop.org/mesa/mesa > > $ cd mesa > > - $ ./autogen.sh --prefix=$WLD --enable-gles2 \ > > - --disable-gallium-egl --enable-gallium-nouveau --enable-gallium-r600 > > \ > > - --with-egl-platforms=x11,wayland,drm > > + $ ./autogen.sh --prefix=$WLD --enable-gles2 --disable-gallium-egl \ > > + --with-egl-platforms=x11,wayland,drm --enable-gbm > > --enable-shared-glapi > > $ make && make install > > > > > > -- > > 1.7.6 > > > > ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH] Update mesa build instructions
--- building.html | 20 +--- 1 files changed, 17 insertions(+), 3 deletions(-) diff --git a/building.html b/building.html index f52f80e..1cced7b 100644 --- a/building.html +++ b/building.html @@ -85,11 +85,25 @@ Other dependencies are development packages of xcb-dri2 and xcb-xfixes. $ ./autogen.sh --prefix=$WLD --enable-nouveau-experimental-api $ make && make install +$ git clone git://anongit.freedesktop.org/git/xorg/util/macros +$ cd macros +$ ./autogen.sh --prefix=$WLD +$ make && make install + +$ git clone git://anongit.freedesktop.org/xorg/proto/glproto +$ cd macros +$ ./autogen.sh --prefix=$WLD +$ make && make install + +$ git clone git://anongit.freedesktop.org/xorg/proto/dri2proto +$ cd macros +$ ./autogen.sh --prefix=$WLD +$ make && make install + $ git clone git://anongit.freedesktop.org/mesa/mesa $ cd mesa -$ ./autogen.sh --prefix=$WLD --enable-gles2 \ - --disable-gallium-egl --enable-gallium-nouveau --enable-gallium-r600 \ - --with-egl-platforms=x11,wayland,drm +$ ./autogen.sh --prefix=$WLD --enable-gles2 --disable-gallium-egl \ + --with-egl-platforms=x11,wayland,drm --enable-gbm --enable-shared-glapi $ make && make install -- 1.7.6 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 2/2] Pass object ID not pointer when sending a global announce event
When the type for the first argument of the global event changed from new_id to uint, wl_connection_vmarshal started expecting an integer argument rather than an object argument. As a result we were sending the client a chunk of pointer rather than a useful global identifier. --- wayland/wayland-server.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/wayland/wayland-server.c b/wayland/wayland-server.c index d4fdfc7..2019cb4 100644 --- a/wayland/wayland-server.c +++ b/wayland/wayland-server.c @@ -313,7 +313,7 @@ wl_client_post_global(struct wl_client *client, struct wl_object *object) wl_client_post_event(client, &client->display->object, WL_DISPLAY_GLOBAL, -object, +object->id, object->interface->name, object->interface->version); } -- 1.7.6 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 1/2] Fix segfault in client when demarshalling fails
--- wayland/wayland-client.c |5 + 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/wayland/wayland-client.c b/wayland/wayland-client.c index ce27a90..d1ed25a 100644 --- a/wayland/wayland-client.c +++ b/wayland/wayland-client.c @@ -521,6 +521,11 @@ handle_event(struct wl_display *display, closure = wl_connection_demarshal(display->connection, size, display->objects, message); + if (! closure) { + fprintf(stderr, "Error demarshalling closure: %m\n"); + return; + } + if (wl_debug) wl_closure_print(closure, &proxy->object, false); -- 1.7.6 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH|demos] Support new mechanic for shell move and resize (cast to shell-surface)
--- clients/window.c| 26 +++--- compositor/compositor-wayland.c | 18 - compositor/compositor.h |1 + compositor/shell.c | 156 --- 4 files changed, 127 insertions(+), 74 deletions(-) diff --git a/clients/window.c b/clients/window.c index 758a536..f3c3da8 100644 --- a/clients/window.c +++ b/clients/window.c @@ -90,6 +90,7 @@ struct window { struct display *display; struct window *parent; struct wl_surface *surface; + struct wl_shell_surface *shell_surface; char *title; struct rectangle allocation, saved_allocation, server_allocation; int x, y; @@ -1078,8 +1079,8 @@ window_handle_button(void *data, if (button == BTN_LEFT && state == 1) { switch (location) { case WINDOW_TITLEBAR: - wl_shell_move(window->display->shell, - window->surface, input_device, time); + wl_shell_surface_move(window->shell_surface, + input_device, time); break; case WINDOW_RESIZING_TOP: case WINDOW_RESIZING_BOTTOM: @@ -1089,9 +1090,8 @@ window_handle_button(void *data, case WINDOW_RESIZING_TOP_RIGHT: case WINDOW_RESIZING_BOTTOM_LEFT: case WINDOW_RESIZING_BOTTOM_RIGHT: - wl_shell_resize(window->display->shell, - window->surface, input_device, time, - location); + wl_shell_surface_resize(window->shell_surface, + input_device, time, location); break; case WINDOW_CLIENT_AREA: if (window->button_handler) @@ -1251,8 +1251,8 @@ window_create_drag(struct window *window) void window_move(struct window *window, struct input *input, uint32_t time) { - wl_shell_move(window->display->shell, - window->surface, input->input_device, time); + wl_shell_surface_move(window->shell_surface, input->input_device, + time); } void @@ -1263,11 +1263,10 @@ window_activate_drag(struct wl_drag *drag, struct window *window, } static void -handle_configure(void *data, struct wl_shell *shell, -uint32_t time, uint32_t edges, -struct wl_surface *surface, int32_t width, int32_t height) +handle_configure(void *data, struct wl_shell_surface *shell_surface, +uint32_t time, uint32_t edges, int32_t width, int32_t height) { - struct window *window = wl_surface_get_user_data(surface); + struct window *window = wl_shell_surface_get_user_data(shell_surface); int32_t child_width, child_height; /* FIXME: this is probably the wrong place to check for width @@ -1294,7 +1293,7 @@ handle_configure(void *data, struct wl_shell *shell, } } -static const struct wl_shell_listener shell_listener = { +static const struct wl_shell_surface_listener shell_surface_listener = { handle_configure, }; @@ -1490,6 +1489,8 @@ window_create_internal(struct display *display, struct window *parent, window->display = display; window->parent = parent; window->surface = wl_compositor_create_surface(display->compositor); + window->shell_surface = + wl_shell_create_shell_surface(display->shell, window->surface); window->allocation.x = 0; window->allocation.y = 0; window->allocation.width = width; @@ -1732,7 +1733,6 @@ display_handle_global(struct wl_display *display, uint32_t id, display_add_input(d, id); } else if (strcmp(interface, "wl_shell") == 0) { d->shell = wl_shell_create(display, id, 1); - wl_shell_add_listener(d->shell, &shell_listener, d); } else if (strcmp(interface, "wl_shm") == 0) { d->shm = wl_shm_create(display, id, 1); } else if (strcmp(interface, "wl_selection_offer") == 0) { diff --git a/compositor/compositor-wayland.c b/compositor/compositor-wayland.c index 6cd02ed..648f452 100644 --- a/compositor/compositor-wayland.c +++ b/compositor/compositor-wayland.c @@ -299,23 +299,6 @@ static const struct wl_output_listener output_listener = { display_handle_geometry, }; -/* parent shell interface */ -static void -handle_configure(void *data, struct wl_shell *shell, -uint32_t time, uint32_t edges, -struct wl_surface *surface, int32_t width, int32_t height) -{ -#if 0 - struct output *output = wl_surface_get_user_data(surface); - - /* FIXME: add resize? */ -#endif -} - -static const struct wl_shell_listener shell_listener = { - handle_configure, -}; - /* parent input interface */ static vo
[PATCH] Make shell movement actions methods on a shell surface
This patch makes move and resize methods on a surface rather than methods stored in some "shell" global. However, to compartmentalize functionality, the methods still appear in a different interface than wl_surface. The interface is called wl_shell_surface. The client essentially "casts" a wl_surface to a wl_shell_surface by constructing a new wl_shell_surface from a wl_surface. The result is two object IDs with two interfaces, but representing the same underlying conceptual object. --- protocol/wayland.xml | 26 +++--- 1 files changed, 15 insertions(+), 11 deletions(-) diff --git a/protocol/wayland.xml b/protocol/wayland.xml index 9d0a539..36a2d74 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -142,8 +142,22 @@ + + + + + + + + + + + + + + + - @@ -161,21 +175,12 @@ - - - - - - - - -
[PATCH] Update .gitignore
--- compositor/.gitignore |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/compositor/.gitignore b/compositor/.gitignore index 847efbd..6e8eb59 100644 --- a/compositor/.gitignore +++ b/compositor/.gitignore @@ -1,4 +1,4 @@ -compositor +wayland-compositor screenshooter-protocol.c screenshooter-server-protocol.h meego-tablet-protocol.c -- 1.7.5.1 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Wayland Window Management Proposal
On Fri, May 13, 2011 at 03:13:01PM +0200, Michal Suchanek wrote: > On 13 May 2011 11:26, Daniel Stone wrote: > > On Thu, May 12, 2011 at 06:22:01PM +0200, Michal Suchanek wrote: > >> You can't expect that every single client is high-priority and lag-free. > > > > Run better clients, then? Or stop trying to micro-optimise for the case > > of pressing the close button on an unresponsive client? > > > > This is not about pressing the close button. It need not have an > immediate response and people can accept that, there are workarounds > and you close windows only so often. > > However, window resizes need to be responsive otherwise you introduce > lag, possibly to the point that the person moving the mouse has no > clue what is going on the moment a window resize is initiated. > You can always use the "rubber band" style of resize, in which case the window only needs to be told about the resize, and respond to it, when the user picks a size and drops the corner. In fact you can pretty easily do both, where the rubber band appears when the window hasn't managed to keep up, so the user still has a visual cue to what they are doing. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Wayland Window Management Proposal
On Fri, May 13, 2011 at 08:44:23PM +0200, Michal Suchanek wrote: > Again, do you really know only one transition between two frames - flashing? > > With all the effects compositors are capable of today this is the only > thing you can think of? > Fade to corruption? That just means crap is onscreen for a longer amount of time. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH] compositor: Set EGL_PLATFORM env variable for each backend.
On Tue, May 10, 2011 at 04:42:56PM -0400, Kristian Høgsberg wrote: > Indeed. I'll commit this patch for now, since I've had enough of > failing to set EGL_PLATFORM and then trying to figure out why it > breaks. The best solution I know of at this point is a "magic" way to > look at the native display argument and detect what kind it is. So > for example, stat it to see if it's a char device, in which case we > decide it's the drm platform. If not, assume it's a pointer a struct > and see if the first field looks like a valid pointer (not NULL and a > multiple of 4), in which case we assume it's a X display pointer > (Xlib.h, line 506). For the wl_display struct we can make the first > field a pointer to a wayland symbol which will let us distinguish it > from an X display pointer. > The way I thought to do it was to make eglDisplay take none of those as arguments, but instead take a struct mesaEglDisplay * where said struct was defined: struct mesaEglDisplay { /* uint64_t magic; */ char[8] platform; void *display; } The reason it works is obvious, and its well within the egl spec. If you wanted backward compatiblity, you could leave the magic uncommented and always fill with 0xdeadbeefb4b3f00d, which would let you distinguish the new mechanism with magic detection (though much more deterministic magic detection than what you outlined) and otherwise just use the present system. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH] compositor: Set EGL_PLATFORM env variable for each backend.
On Tue, May 10, 2011 at 08:00:19PM +, Egbert Eich wrote: > I may have missed something, but - since the Wayland compositor > already picks a platform backend, opens a connection and initializes the > backend specific display data structure it doesn't make sense > to let egl pick a platform. If it picks a different one the > display specific data structure will most likely not match. > Thus determine the platform in the Wayland rendering backend by setting > the EGL_PLATFORM env variable. > For the client any other platform than 'wayland' doesn't seem to make > sense. > I'm not sure if I've got the the platform ofr openfwd right. > > Signed-off-by: Egbert Eich This is one of many ways to hack around the somewhat deficient platform selection in EGL (which in turn is a product of attempting to implement the spec as best as they can). Some sort of architectural fix for mesa would probably be preferred, but nobody has yet found one that people will agree on. --CJD > --- > clients/window.c|1 + > compositor/compositor-drm.c |1 + > compositor/compositor-openwfd.c |1 + > compositor/compositor-wayland.c |1 + > compositor/compositor-x11.c |1 + > 5 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/clients/window.c b/clients/window.c > index 9d0b753..8c3f8d2 100644 > --- a/clients/window.c > +++ b/clients/window.c > @@ -1757,6 +1757,7 @@ init_egl(struct display *d) > EGL_NONE > }; > > + setenv("EGL_PLATFORM", "wayland", 1); > d->dpy = eglGetDisplay(d->display); > if (!eglInitialize(d->dpy, &major, &minor)) { > fprintf(stderr, "failed to initialize display\n"); > diff --git a/compositor/compositor-drm.c b/compositor/compositor-drm.c > index 4897b38..9fc5b49 100644 > --- a/compositor/compositor-drm.c > +++ b/compositor/compositor-drm.c > @@ -269,6 +269,7 @@ init_egl(struct drm_compositor *ec, struct udev_device > *device) > return -1; > } > > + setenv("EGL_PLATFORM", "drm", 1); > ec->drm.fd = fd; > ec->base.display = eglGetDisplay(FD_TO_EGL_NATIVE_DPY(ec->drm.fd)); > if (ec->base.display == NULL) { > diff --git a/compositor/compositor-openwfd.c b/compositor/compositor-openwfd.c > index 0ddde52..ccd3dce 100644 > --- a/compositor/compositor-openwfd.c > +++ b/compositor/compositor-openwfd.c > @@ -118,6 +118,7 @@ init_egl(struct wfd_compositor *ec) > return -1; > > ec->wfd_fd = fd; > + setenv("EGL_PLATFORM", "drm", 1); > ec->base.display = eglGetDisplay(FD_TO_EGL_NATIVE_DPY(ec->wfd_fd)); > if (ec->base.display == NULL) { > fprintf(stderr, "failed to create display\n"); > diff --git a/compositor/compositor-wayland.c b/compositor/compositor-wayland.c > index 1a53e8d..6cd02ed 100644 > --- a/compositor/compositor-wayland.c > +++ b/compositor/compositor-wayland.c > @@ -111,6 +111,7 @@ wayland_compositor_init_egl(struct wayland_compositor *c) > EGL_NONE > }; > > + setenv("EGL_PLATFORM", "wayland", 1); > c->base.display = eglGetDisplay(c->parent.display); > if (c->base.display == NULL) { > fprintf(stderr, "failed to create display\n"); > diff --git a/compositor/compositor-x11.c b/compositor/compositor-x11.c > index ac31881..3517fad 100644 > --- a/compositor/compositor-x11.c > +++ b/compositor/compositor-x11.c > @@ -113,6 +113,7 @@ x11_compositor_init_egl(struct x11_compositor *c) > EGL_NONE > }; > > + setenv("EGL_PLATFORM", "x11", 1); > c->base.display = eglGetDisplay(c->dpy); > if (c->base.display == NULL) { > fprintf(stderr, "failed to create display\n"); > -- > 1.7.3.4 > > > ___ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Interface modules
Talking with krh on IRC, there's a few cases that have come up where a compositor might want objects to have different methods available than usual. Some examples include: * System compositors, which might want map_fullscreen, but not the other map_* functions. * Network proxying compositors that might want the other map_* functions but not map_fullscreen. * A whole array of different potential additions and removals for wl_shell, depending on the paradigm this compositor is using for window management. There's a few ways that this can be handled: We could have different interfaces when the set of functionality is different. This is the approach that is being taken now. It keeps wayland simple and somewhat extensible, but the disadvantage is that apps have to know which version of the object to expect. If more than one version can provide for them then they have to learn several ways to interact with different compositors. The library could abstract around this a bit, but it would mean every version of a given interface had to be known to the library, which makes it more painful to, say, have new compositors implement their own shell interfaces independently of wayland. We could solve a good bit of this with a naming convention. For example, we could say wl_shell.meego would contain all the methods in a basic wl_shell plus whatever was added by meego. Apps that don't use the meego functionality know that they can use the object like a regular wl_shell. This is nice in that it is very easy to implement the way wayland is written now; the extended interface just tacks its new methods onto the end of the implementation struct in the object header. The disadvantage to this method is that its hard to layer functionality. For example, if one extension might want to allow move but not resize, and another wanted resize but not move, it isn't possible to specify the base shell in such a way that either of those components could be dropped. You could specify the base shell with move and resize as wl_shell.with_move.with_resize, but since the names (and internal interfaces)are strict subsets and supersets there's no way to drop with_move and keep with_resize. There's also the danger of names becoming quite long, especially if we want people to be able to snip out large chunks of "basic" functionality from the interfaces. A more flexible option is to implement modules for interfaces. From an OO perspective these would behave semantically like modules in ruby, or like what many other languages call mix-ins. An object may support one or more addon modules to its interface, in any combination. Each addon module has its own list of additional methods and events provided. The interface for this would basically add one more uint32_t argument to wl_proxy_marshal, for module id, and one more client call, wl_proxy_supports. When not using functionality added by a module, the extra argument to wl_proxy_marshal is 0, and things continue as normal. When using functionality within a module, the client first calls wl_proxy_supports, passing the proxy, a string name for the module, and a desired version. If the function returns non-zero, then that value should be used for the module id argument in wl_proxy_marshal when calling methods in that module. Thoughts? --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH 1/2] Add to output protocol to allow rotate/resize
On Fri, Apr 29, 2011 at 04:58:24PM -0400, Kristian Høgsberg wrote: > Apps shouldn't generally change the *default* resolution. Games and > such may want to show their window at the native resolution and that's > part of the fullscreen plan: > > > http://lists.freedesktop.org/archives/wayland-devel/2010-November/000117.html > Ah, that does make sense? > Of course, the DE config tool will want to be able to change the > default mode and placement of monitors. In that case we're talking > about a specific DE with it's own display configuration tool, and > perhaps the tool can just update the underlying config (GConf or so) > and the compositor picks up the change from there. As a first step > I'd rather just add the extra info to wl_output (list of available > modes, refresh rates, sub pixel layout, connector name etc), and punt > on how to change it for now. > Would it make sense for the demo compositor to grow some sort of config backend then? Obviously it wouldn't be directly useful to anyone else but it would at least let us test the functionality that should be exposed "elsewhere." --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: [PATCH 1/2] Add to output protocol to allow rotate/resize
On Fri, Apr 29, 2011 at 09:43:53AM +0200, Benjamin Franzke wrote: > 2011/4/29 Casey Dahlin : > > Adds some parameters to the output geometry event. Also adds a move method > > to > > change those parameters. > > --- > > protocol/wayland.xml | 15 --- > > 1 files changed, 12 insertions(+), 3 deletions(-) > > > > diff --git a/protocol/wayland.xml b/protocol/wayland.xml > > index 11976fa..187e961 100644 > > --- a/protocol/wayland.xml > > +++ b/protocol/wayland.xml > > @@ -446,12 +446,21 @@ > > published as global during start up, or when a screen is hot > > plugged. --> > > > > - > > + > > + > > + > > + > > + > > + > > I think we need a general debate first, about how to grant permission > to only specific clients to change output configuration. > Or even not making it part of the main protocol at all, just being an > extension or so. > We might not want every application to have control of these things. > xrandr doesn't seem to have much more authentication than this. Its not much more dangerous than changing the resolution, which many fairly pedestrian apps expect to be able to do (i.e. games). Indeed its potentially a good deal less dangerous than fullscreen mode (though that can be fixed with UI), far less dangerous than screenshots from a security perspective (and we can't have clients render certain effects if they can't get a copy of what's behind them to distort), and even a good deal safer than input grabs. > > + > > + > > > > > > > > - > > - > > + > > + > > + > > > > > > Why changing the width and height datatype within this patch? > That would be another patch. But Kristian denied that somewhen already. > Oh yeah, I did do that didn't I? X( I'll kill it in the revision. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 2/2] Add flip client
The flip client provides access to the move method of the output interface, and lets you rotate, flip, and shift the screen view. --- clients/.gitignore |1 + clients/Makefile.am |4 ++ clients/flip.c | 104 +++ 3 files changed, 109 insertions(+), 0 deletions(-) create mode 100644 clients/flip.c diff --git a/clients/.gitignore b/clients/.gitignore index fe7546d..419f05b 100644 --- a/clients/.gitignore +++ b/clients/.gitignore @@ -12,3 +12,4 @@ simple-client smoke terminal view +flip diff --git a/clients/Makefile.am b/clients/Makefile.am index ca11be3..6dd5b5a 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -2,6 +2,7 @@ noinst_PROGRAMS = \ gears \ flower \ screenshot \ + flip\ terminal\ image \ $(poppler_programs) \ @@ -39,6 +40,9 @@ flower_LDADD = $(toolkit_libs) screenshot_SOURCES = screenshot.c screenshooter-protocol.c screenshot_LDADD = $(toolkit_libs) +flip_SOURCES = flip.c +flip_LDADD = $(CLIENT_LIBS) -lrt -lm + terminal_SOURCES = terminal.c terminal_LDADD = $(toolkit_libs) -lutil diff --git a/clients/flip.c b/clients/flip.c new file mode 100644 index 000..5903a81 --- /dev/null +++ b/clients/flip.c @@ -0,0 +1,104 @@ +/* + * Copyright © 2011 Casey Dahlin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include + +#include "wayland-client.h" + +static void +handle_global(struct wl_display *display, uint32_t id, + const char *interface, uint32_t version, void *data) +{ + struct wl_output **output = data; + + if (strcmp(interface, "wl_output") == 0) + *output = wl_output_create(display, id, 1); +} + +int main(int argc, char *argv[]) +{ + struct wl_display *display; + struct wl_output *output; + int x = 0, y = 0, flags = 0, i; + int had_nums = 0; + char *end = ""; + + for (i = 1; i < argc; i++) { + if (! strcmp(argv[i], "--hflip")) { + flags |= WL_OUTPUT_HORIZFLIP; + } else if (! strcmp(argv[i], "--vflip")) { + flags |= WL_OUTPUT_VERTFLIP; + } else if (! strcmp(argv[i], "--rotatecw")) { + flags |= WL_OUTPUT_CWROTATE; + } else if (had_nums == 2) { + fprintf(stderr, "too many arguments\n"); + goto usage; + } else if (had_nums++ == 1) { + y = strtoll(argv[i], &end, 0); + } else { + x = strtoll(argv[i], &end, 0); + } + + if (*end) { + fprintf(stderr, "coordinates must be numeric\n"); + goto usage; + } + } + + if (had_nums == 1) + goto usage; + + display = wl_display_connect(NULL); + if (display == NULL) { + fprintf(stderr, "failed to create display: %m\n"); + return -1; + } + + output = NULL; + wl_display_add_global_listener(display, handle_global, &output); + wl_display_iterate(display, WL_DISPLAY_READABLE); + if (output == NULL) { + fprintf(stderr, "output not found\n"); + return -1; + } + + wl_output_move(output, x, y, flags); + wl_display_iterate(display, WL_DISPLAY_WRITABLE); + wl_display_des
[PATCH 1/2] Add support for move method on outputs
Outputs can now be rotated, flipped, and shifted by using the new move method of the output interface. --- clients/window.c|3 +- compositor/compositor-wayland.c |4 +- compositor/compositor.c | 97 -- compositor/compositor.h |3 +- 4 files changed, 77 insertions(+), 30 deletions(-) diff --git a/clients/window.c b/clients/window.c index 9d0b753..33dbc94 100644 --- a/clients/window.c +++ b/clients/window.c @@ -1523,7 +1523,8 @@ window_set_buffer_type(struct window *window, enum window_buffer_type type) static void display_handle_geometry(void *data, struct wl_output *output, - int32_t x, int32_t y, int32_t width, int32_t height) + int32_t x, int32_t y, uint32_t tflags, + uint32_t width, uint32_t height) { struct display *display = data; diff --git a/compositor/compositor-wayland.c b/compositor/compositor-wayland.c index 4093f2a..508ea88 100644 --- a/compositor/compositor-wayland.c +++ b/compositor/compositor-wayland.c @@ -283,8 +283,8 @@ cleanup_output: static void display_handle_geometry(void *data, struct wl_output *output, - int32_t x, int32_t y, - int32_t width, int32_t height) + int32_t x, int32_t y, uint32_t tflags, + uint32_t width, uint32_t height) { struct wayland_compositor *c = data; diff --git a/compositor/compositor.c b/compositor/compositor.c index df25407..4f0912f 100644 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@ -113,6 +113,16 @@ wlsc_matrix_scale(struct wlsc_matrix *matrix, GLfloat x, GLfloat y, GLfloat z) } static void +wlsc_matrix_rotate_90ccw(struct wlsc_matrix *matrix) +{ + struct wlsc_matrix rot = { + { 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 } + }; + + wlsc_matrix_multiply(matrix, &rot); +} + +static void wlsc_matrix_transform(struct wlsc_matrix *matrix, struct wlsc_vector *v) { int i, j; @@ -649,7 +659,7 @@ wlsc_output_damage(struct wlsc_output *output) pixman_region32_union_rect(&compositor->damage_region, &compositor->damage_region, output->x, output->y, - output->width, output->height); + output->swidth, output->sheight); wlsc_compositor_schedule_repaint(compositor); } @@ -687,8 +697,8 @@ fade_output(struct wlsc_output *output, surface.compositor = compositor; surface.x = output->x; surface.y = output->y; - surface.width = output->width; - surface.height = output->height; + surface.width = output->swidth; + surface.height = output->sheight; surface.texture = GL_NONE; if (tint <= 1.0) @@ -727,7 +737,7 @@ wlsc_output_repaint(struct wlsc_output *output) pixman_region32_intersect_rect(&new_damage, &ec->damage_region, output->x, output->y, - output->width, output->height); + output->swidth, output->sheight); pixman_region32_subtract(&ec->damage_region, &ec->damage_region, &new_damage); pixman_region32_union(&total_damage, &new_damage, @@ -754,8 +764,8 @@ wlsc_output_repaint(struct wlsc_output *output) } } - if (es->width < output->width || - es->height < output->height) + if (es->width < output->swidth || + es->height < output->sheight) glClear(GL_COLOR_BUFFER_BIT); wlsc_surface_draw(es, output, &total_damage); } else { @@ -893,9 +903,10 @@ wlsc_surface_assign_output(struct wlsc_surface *es) struct wlsc_output *tmp = es->output; es->output = NULL; + wl_list_for_each(output, &ec->output_list, link) { - if (output->x < es->x && es->x < output->x + output->width && - output->y < es->y && es->y < output->y + output->height) { + if (output->x < es->x && es->x < output->x + output->swidth && + output->y < es->y && es->y < output->y + output->sheight) { if (output != tmp) printf("assiging surface %p to output %p\n", es, output); @@ -928,8 +939,8 @@ surface_attach(struct wl_client *client, es->buffer = buffer; switch (es->map_type) { case WLSC_SURFACE_MAP_FULLSCREEN: - es->x = (es->fullscreen_output->width - es->width) / 2; - es->y = (es->fullscreen_output->height - es->height) / 2; + es->x
[PATCH:demos 0/2] Update demos to support/show off output
See corresponding wayland patch series. This series updates the demo compositor to correctly handle being flipped, rotated, and shifted. It also adds a small client which does not draw anything or persist, but takes arguments to perform any of the above actions. Instructions for the client can be obtained by running it with --help ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH] Add some new things to .gitignore
libtoytoolkit.a, and generated protocol headers for meego-tablet. --- clients/.gitignore|1 + compositor/.gitignore |2 ++ 2 files changed, 3 insertions(+), 0 deletions(-) diff --git a/clients/.gitignore b/clients/.gitignore index 8b3c40c..fe7546d 100644 --- a/clients/.gitignore +++ b/clients/.gitignore @@ -1,3 +1,4 @@ +libtoytoolkit.a dnd eventdemo flower diff --git a/compositor/.gitignore b/compositor/.gitignore index dc926c1..847efbd 100644 --- a/compositor/.gitignore +++ b/compositor/.gitignore @@ -1,3 +1,5 @@ compositor screenshooter-protocol.c screenshooter-server-protocol.h +meego-tablet-protocol.c +meego-tablet-server-protocol.h -- 1.7.5 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 1/2] Add to output protocol to allow rotate/resize
Adds some parameters to the output geometry event. Also adds a move method to change those parameters. --- protocol/wayland.xml | 15 --- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/protocol/wayland.xml b/protocol/wayland.xml index 11976fa..187e961 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -446,12 +446,21 @@ published as global during start up, or when a screen is hot plugged. --> - + + + + + + + + - - + + + -- 1.7.5 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 2/2] Add wayland-protocol.h
This file can store flag values and such constants as are useful to have at both ends of the protocol. --- wayland/Makefile.am|1 + wayland/wayland-client.h |1 + wayland/wayland-protocol.h | 30 ++ wayland/wayland-server.h |1 + 4 files changed, 33 insertions(+), 0 deletions(-) create mode 100644 wayland/wayland-protocol.h diff --git a/wayland/Makefile.am b/wayland/Makefile.am index ed31dfc..be6d6ab 100644 --- a/wayland/Makefile.am +++ b/wayland/Makefile.am @@ -7,6 +7,7 @@ include_HEADERS = \ wayland-server.h\ wayland-client-protocol.h \ wayland-client.h\ + wayland-protocol.h \ wayland-egl.h libwayland_util_la_SOURCES = \ diff --git a/wayland/wayland-client.h b/wayland/wayland-client.h index f1ac797..ae1e926 100644 --- a/wayland/wayland-client.h +++ b/wayland/wayland-client.h @@ -45,6 +45,7 @@ void wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data); void *wl_proxy_get_user_data(struct wl_proxy *proxy); #include "wayland-client-protocol.h" +#include "wayland-protocol.h" #define WL_DISPLAY_READABLE 0x01 #define WL_DISPLAY_WRITABLE 0x02 diff --git a/wayland/wayland-protocol.h b/wayland/wayland-protocol.h new file mode 100644 index 000..7660779 --- /dev/null +++ b/wayland/wayland-protocol.h @@ -0,0 +1,30 @@ +/* + * Copyright © 2011 Casey Dahlin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _WAYLAND_PROTOCOL_H +#define _WAYLAND_PROTOCOL_H + +#define WL_OUTPUT_HORIZFLIP 0x01 +#define WL_OUTPUT_VERTFLIP 0x02 +#define WL_OUTPUT_CWROTATE 0x04 + +#endif diff --git a/wayland/wayland-server.h b/wayland/wayland-server.h index 649bb6b..2026c6a 100644 --- a/wayland/wayland-server.h +++ b/wayland/wayland-server.h @@ -30,6 +30,7 @@ extern "C" { #include #include "wayland-util.h" #include "wayland-server-protocol.h" +#include "wayland-protocol.h" enum { WL_EVENT_READABLE = 0x01, -- 1.7.5 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH 0/2] RandR functionality for wayland protocol
The second R is a bit of a misnomer right now since there's not actually modesetting, but this patch set extends the wayland protocol to allow rotating and flipping outputs, and moving their position. It adds a single method to the "output" interface to set x, y, and some flags to perform transformation: one to flip horizontal, one to flip vertical, and one to rotate 90 degrees clockwise (you'll note that setting both flips will have the effect of a 180 degree rotation, and setting all 3 flags will rotate 270 degrees, so further transforms aren't necessary for the basic stuff). The geometry event is ammended to report the transformation flags along with the other info. ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
[PATCH] Add some things related to wayland-scanner to .gitignore
--- .gitignore |1 + wayland/.gitignore |2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/.gitignore b/.gitignore index 7c5bfe5..904eb50 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ *~ .libs /aclocal.m4 +/wayland-scanner.m4 /autom4te.cache /config.guess /config.h diff --git a/wayland/.gitignore b/wayland/.gitignore index 0d28ba5..1813f89 100644 --- a/wayland/.gitignore +++ b/wayland/.gitignore @@ -1,4 +1,4 @@ -scanner +wayland-scanner wayland-client-protocol.h wayland-protocol.c wayland-server-protocol.h -- 1.7.5 ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Must specify EGL_PLATFORM when running compositor?
I built Wayland for the first time since EGL grew specific support for it, and I ran into a strange issue. I used the instructions at http://wayland.freedesktop.org/building.html pretty much exactly, but when running the compositor, I got a segmentation fault. The only way to avoid this was to run the compositor with EGL_PLATFORM=x11 in the environment. Otherwise EGL would attempt to load the wayland driver, and in the process attempt to use the X11 "Display *" the compositor had allocated as a proxy "struct wl_display" I don't see how this problem is supposed to be avoided looking at the EGL code, and it seems rather silly that the EGL code would make such a mistake. Is it supposed to be this way? --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Running on bare hardware
On Sun, Feb 20, 2011 at 10:23:18PM +0100, Enrico Weigelt wrote: > * Dave Airlie schrieb: > > > The proper way is to design ioctls so compat layers aren't needed, to work > > across all 32/64 combos, so that means using 64-bit aligned types as much > > as possible, and padding to make sure 64-bit types don't end up unaligned. > > Until, in several years, pointers get larger than 64bit ;-p Most of us intend to be retired or dead by then. > > Actually, I still didn't get the point why such simple things > have to be ioctl()s (which are unportable and and local-only > by design). Why not just using plain file operations ? > > (eg. getting the version info could be as simple as someting like: > `cat /dev/dri/version`) > I doubt you'll get much weight behind it, but a small demonstrative patch to linux-api would be the right way to start that conversation. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: What's wrong with wayland?
On Sun, Feb 20, 2011 at 10:12:42PM +0100, Enrico Weigelt wrote: > That's the point that annoys me: I want the window manager to > remain separate and exchangable at runtime. > Then just use a proxy compositor over your wayland compositor. Wayland doesn't, IMHO, replace X, so much as it replaces the window manager. It manages to do this in a way that is clever, so much so that it /obviates/ X. We don't replace X, we just get rid of it and let the window manager do the scanout and clientside conversation by itself. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: Running on bare hardware
On Mon, Feb 07, 2011 at 07:28:35AM +1000, Dave Airlie wrote: > > We then use libdrm in userspace to abstract away the internal details > of the interface, > you shouldn't ever be directly talking to drm ioctls. > I'll take this moment to point out that, while its no excuse to go using them, libdrm is actually documented worse than the ioctls (I found one LWN article explaining how the ioctls work, I found absolutely nothing on the libdrm API, and I've been fumbling through code examples trying to learn it myself). I'd be happy to help fix this if I could get someone to sit down and lecture me on it. --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: wayland implementation conformance
On Thu, Jan 27, 2011 at 11:35:17AM -0500, Jeremy Volkman wrote: > Sure. xmllint, which comes with libxml2 (libxml2-utils in Ubuntu), supports > RELAX NG these days. > > scout:protocol jvolkman$ xmllint --noout --relaxng schema.xml wayland.xml > wayland.xml validates > > -Jeremy > The only issue is there's no way to link a relaxng schema from the file, so there's no sure path to find the documentation given the file itself. I think a DTD in addition to the schema would solve that. --CJD > 2011/1/27 Kristian Høgsberg > > > On Wed, Jan 26, 2011 at 5:09 PM, Jeremy Volkman > > wrote: > > > Here's my stab at a Wayland schema written in RELAX NG. It can be > > converted > > > to a W3C schema if preferred, but RELAX NG provides more functionality. > > For > > > example, the schema is able to require an "interface" attribute for an > > > argument only if the argument type is "object" or "new_id". > > > -Jeremy > > > > Is there a tool that can verify the protocol against the schema? > > > > Kristian > > > > > 2011/1/26 Kristian Høgsberg > > >> > > >> 2011/1/26 Casey Dahlin : > > >> > On Wed, Jan 26, 2011 at 01:40:25PM -0500, Kristian Høgsberg wrote: > > >> >> 2011/1/26 Josh Leverette : > > >> >> > I'm not certain, but I think there could eventually be enough > > >> >> > variation for that to be needed. However, even if there isn't, > > parsing an > > >> >> > XML file might be a better long term solution that weakly linked > > functions > > >> >> > and things like that. Perhaps we could modify his idea about an XML > > profile > > >> >> > structure to allow you to delve into each supported profile and > > find out > > >> >> > more about what it supports without having to hard code acceptable > > version > > >> >> > numbers into a program. The only problem I foresee is how to modify > > the XML > > >> >> > file. It's not going to be the end user's job.. but if any program > > could > > >> >> > modify it there needs to be a fallback system to prevent a rogue > > program > > >> >> > from deleting other profile advertisements written in by the system > > or other > > >> >> > programs. > > >> >> > > >> >> The XML file isn't used at runtime. It's just a convenient mechanism > > >> >> to describe the interface. The way it works is that a client > > connects > > >> >> to the server and the server will then advertise all the global > > >> >> objects available by giving their object id, interface name and > > >> >> version. A client can then look through the list to see what's > > >> >> available and adjust its behaviour accordingly. > > >> >> > > >> >> Kristian > > >> >> > > >> > > > >> > Does the XML file have a particular schema? > > >> > > > >> > It might be useful to install it in /usr/share so it could be used by > > >> > tools. I'm thinking mostly of a d-feet style introspection tool for > > the > > >> > Wayland protocol (we could even go as far as dynamically adaptable > > >> > bindings for languages like Ruby or Python). > > >> > > >> I didn't actually write a schema for it, but if somebody with the > > >> right XML-fu could do that that would be nice. It's a good point that > > >> dynamic languages probably just want to parse the XML directly and > > >> generate the bindings on the fly and for that we would need to install > > >> the XML. As for introspection/logging/xscope, that's built into the > > >> server side library: set WAYLAND_DEBUG=1 and watch the requests and > > >> events fly by. > > >> > > >> Kristian > > >> ___ > > >> wayland-devel mailing list > > >> wayland-devel@lists.freedesktop.org > > >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel > > > > > > > > > ___ > > > wayland-devel mailing list > > > wayland-devel@lists.freedesktop.org > > > http://lists.freedesktop.org/mailman/listinfo/wayland-devel > > > > > > > > > ___ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel
Re: wayland implementation conformance
On Wed, Jan 26, 2011 at 01:40:25PM -0500, Kristian Høgsberg wrote: > 2011/1/26 Josh Leverette : > > I'm not certain, but I think there could eventually be enough variation for > > that to be needed. However, even if there isn't, parsing an XML file might > > be a better long term solution that weakly linked functions and things like > > that. Perhaps we could modify his idea about an XML profile structure to > > allow you to delve into each supported profile and find out more about what > > it supports without having to hard code acceptable version numbers into a > > program. The only problem I foresee is how to modify the XML file. It's not > > going to be the end user's job.. but if any program could modify it there > > needs to be a fallback system to prevent a rogue program from deleting > > other profile advertisements written in by the system or other programs. > > The XML file isn't used at runtime. It's just a convenient mechanism > to describe the interface. The way it works is that a client connects > to the server and the server will then advertise all the global > objects available by giving their object id, interface name and > version. A client can then look through the list to see what's > available and adjust its behaviour accordingly. > > Kristian > Does the XML file have a particular schema? It might be useful to install it in /usr/share so it could be used by tools. I'm thinking mostly of a d-feet style introspection tool for the Wayland protocol (we could even go as far as dynamically adaptable bindings for languages like Ruby or Python). --CJD ___ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel