Add README for the adventurous, allow evdev override from getenv().
authorKristian Høgsberg <krh@redhat.com>
Mon, 3 Nov 2008 20:31:30 +0000 (15:31 -0500)
committerKristian Høgsberg <krh@redhat.com>
Thu, 6 Nov 2008 15:53:02 +0000 (10:53 -0500)
README [new file with mode: 0644]
wayland.c

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..6924be2
--- /dev/null
+++ b/README
@@ -0,0 +1,65 @@
+This file describes how to build and run wayland.  See NOTES for what
+wayland is or maybe will be some day.
+
+Wayland requires the eagle EGL stack available from
+
+  git://people.freedesktop.org/~krh/eagle
+
+and currently assumes that eagle is checked out in a sibling
+directory, for example:
+
+  ~krh/src/wayland and
+  ~krh/src/eagle
+
+Eagle should work with a recent DRI driver from mesa, but I have mesa
+repo with an eagle branch here:
+
+  git://people.freedesktop.org/~krh/mesa
+
+which provides and experimental DRI CopyBuffer extension, that lets
+wayland use the DRI driver and the hardware for implementing buffer
+swaps.  Eagle needs to be compiled against the dri_interface.h from
+this branch to be able to use the CopyBuffer extension.
+
+To run wayland you currently need intel hardware, a kernel with gem
+and kernel modesetting, and it is necessary to set a couple of
+environment variables.  First, set LD_LIBRARY_PATH:
+
+  export LD_LIBRARY_PATH=$PWD:$PWD/../eagle
+
+Yes, this sucks, but libtool sucks more.  Then to let eagle pick up
+the custom dri driver, set
+
+  export EAGLE_DRIVER_PATH=$PWD/../mesa/lib
+
+and finally set up the path to the evdev device to use as a pointer
+device:
+
+  export WAYLAND_POINTER=/dev/by-id/whatever-it's-called-event-mouse
+
+If you haven't already, load the i915 driver with modesetting:
+
+  modprobe i915 modeset=1
+
+You may need to unload it first, if it's loaded already.  Also, on
+Fedora, there may be a bogus /etc/modprobe.d/i915modeset preventing
+the modeset paramater from reaching the module.  Nuke it.
+
+At this point you should be able to launch wayland and a couple of
+clients.  Try something like:
+
+  ./wayland &
+  ./background <some png/jpg image smaller than 1024x768> &
+  ./flower &
+  ./flower &
+  ./flower &
+  ./window &
+  ./pointer &
+
+Maybe some day there'll be a script that does all this.  Some day...
+
+And after all this work it may still not work or even oops your
+kernel.  It's very much work in progress, so be prepared.
+
+cheers,
+Kristian
index 0c1c75a..765a443 100644 (file)
--- a/wayland.c
+++ b/wayland.c
@@ -484,7 +484,13 @@ static const char input_device_file[] =
 static void
 wl_display_create_input_devices(struct wl_display *display)
 {
-       display->pointer = wl_input_device_create(display, input_device_file, 1);
+       const char *path;
+
+       path = getenv("WAYLAND_POINTER");
+       if (path == NULL)
+               path = input_device_file;
+
+       display->pointer = wl_input_device_create(display, path, 1);
 
        if (display->pointer != NULL)
                wl_hash_insert(&display->objects, display->pointer);