Rename egl-compositor to wayland-system-compositor.

The wayland-system-compositor is the top-level compositor.  X sessions
or nested Wayland sessions will run as clients of the system compositor.
The system compositor is licensed under the GPL.
dev
Kristian Høgsberg 16 years ago
parent 15d0f8b236
commit 82f6e8a2ef
  1. 10
      Makefile.in
  2. 15
      egl-compositor.h
  3. 37
      evdev.c
  4. 52
      wayland-system-compositor.c
  5. 36
      wayland-system-compositor.h

@ -5,7 +5,7 @@ exec_prefix = @exec_prefix@
libs = libwayland-server.so libwayland.so libs = libwayland-server.so libwayland.so
clients = flower gears screenshot terminal clients = flower gears screenshot terminal
compositors = egl-compositor compositors = wayland-system-compositor
all : $(libs) $(compositors) $(clients) all : $(libs) $(compositors) $(clients)
@ -29,14 +29,14 @@ $(libs) :
$(compositors) $(clients) : CFLAGS += @LIBDRM_CFLAGS@ $(compositors) $(clients) : CFLAGS += @LIBDRM_CFLAGS@
egl-compositor : \ wayland-system-compositor : \
egl-compositor.o \ wayland-system-compositor.o \
evdev.o \ evdev.o \
cairo-util.o \ cairo-util.o \
wayland-util.o wayland-util.o
egl-compositor : CFLAGS += @EGL_COMPOSITOR_CFLAGS@ wayland-system-compositor : CFLAGS += @EGL_COMPOSITOR_CFLAGS@
egl-compositor : LDLIBS += -L. -lwayland-server @EGL_COMPOSITOR_LIBS@ -rdynamic -lrt wayland-system-compositor : LDLIBS += -L. -lwayland-server @EGL_COMPOSITOR_LIBS@ -rdynamic -lrt
flower : flower.o wayland-glib.o cairo-util.o flower : flower.o wayland-glib.o cairo-util.o
gears : gears.o window.o wayland-glib.o cairo-util.o gears : gears.o window.o wayland-glib.o cairo-util.o

@ -1,15 +0,0 @@
struct egl_input_device;
void
egl_device_get_position(struct egl_input_device *device, int32_t *x, int32_t *y);
void
notify_motion(struct egl_input_device *device, int x, int y);
void
notify_button(struct egl_input_device *device, int32_t button, int32_t state);
void
notify_key(struct egl_input_device *device, uint32_t key, uint32_t state);
struct evdev_input_device *
evdev_input_device_create(struct egl_input_device *device,
struct wl_display *display, const char *path);

@ -1,23 +1,19 @@
/* /*
* Copyright © 2008 Kristian Høgsberg * Copyright © 2008 Kristian Høgsberg
* *
* Permission to use, copy, modify, distribute, and sell this software and its * This program is free software; you can redistribute it and/or modify
* documentation for any purpose is hereby granted without fee, provided that * it under the terms of the GNU General Public License as published by
* the above copyright notice appear in all copies and that both that copyright * the Free Software Foundation; either version 2 of the License, or
* notice and this permission notice appear in supporting documentation, and * (at your option) any later version.
* 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, * This program is distributed in the hope that it will be useful,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * but WITHOUT ANY WARRANTY; without even the implied warranty of
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * GNU General Public License for more details.
* 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 * You should have received a copy of the GNU General Public License
* OF THIS SOFTWARE. * along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#include <stdio.h> #include <stdio.h>
@ -29,10 +25,10 @@
#include <linux/input.h> #include <linux/input.h>
#include "wayland.h" #include "wayland.h"
#include "egl-compositor.h" #include "wayland-system-compositor.h"
struct evdev_input_device { struct evdev_input_device {
struct egl_input_device *device; struct wlsc_input_device *device;
struct wl_event_source *source; struct wl_event_source *source;
int tool, new_x, new_y; int tool, new_x, new_y;
int base_x, base_y; int base_x, base_y;
@ -49,8 +45,7 @@ static void evdev_input_device_data(int fd, uint32_t mask, void *data)
dx = 0; dx = 0;
dy = 0; dy = 0;
absolute_event = 0; absolute_event = 0;
egl_device_get_position(device->device, &x, &y); wlsc_device_get_position(device->device, &x, &y);
len = read(fd, &ev, sizeof ev); len = read(fd, &ev, sizeof ev);
if (len < 0 || len % sizeof e[0] != 0) { if (len < 0 || len % sizeof e[0] != 0) {
@ -143,7 +138,7 @@ static void evdev_input_device_data(int fd, uint32_t mask, void *data)
} }
struct evdev_input_device * struct evdev_input_device *
evdev_input_device_create(struct egl_input_device *master, evdev_input_device_create(struct wlsc_input_device *master,
struct wl_display *display, const char *path) struct wl_display *display, const char *path)
{ {
struct evdev_input_device *device; struct evdev_input_device *device;

@ -1,23 +1,19 @@
/* /*
* Copyright © 2008 Kristian Høgsberg * Copyright © 2008 Kristian Høgsberg
* *
* Permission to use, copy, modify, distribute, and sell this software and its * This program is free software; you can redistribute it and/or modify
* documentation for any purpose is hereby granted without fee, provided that * it under the terms of the GNU General Public License as published by
* the above copyright notice appear in all copies and that both that copyright * the Free Software Foundation; either version 2 of the License, or
* notice and this permission notice appear in supporting documentation, and * (at your option) any later version.
* 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, * This program is distributed in the hope that it will be useful,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * but WITHOUT ANY WARRANTY; without even the implied warranty of
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * GNU General Public License for more details.
* 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 * You should have received a copy of the GNU General Public License
* OF THIS SOFTWARE. * along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#include <stdio.h> #include <stdio.h>
@ -49,7 +45,7 @@
#include "wayland.h" #include "wayland.h"
#include "cairo-util.h" #include "cairo-util.h"
#include "egl-compositor.h" #include "wayland-system-compositor.h"
#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) #define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
@ -57,7 +53,7 @@ struct wl_visual {
struct wl_object base; struct wl_object base;
}; };
struct egl_input_device { struct wlsc_input_device {
struct wl_object base; struct wl_object base;
int32_t x, y; int32_t x, y;
struct egl_compositor *ec; struct egl_compositor *ec;
@ -510,7 +506,7 @@ repaint(void *data)
{ {
struct egl_compositor *ec = data; struct egl_compositor *ec = data;
struct egl_surface *es; struct egl_surface *es;
struct egl_input_device *eid; struct wlsc_input_device *eid;
struct timespec ts; struct timespec ts;
uint32_t msecs; uint32_t msecs;
@ -536,12 +532,12 @@ repaint(void *data)
draw_surface(ec->overlay); draw_surface(ec->overlay);
eid = container_of(ec->input_device_list.next, eid = container_of(ec->input_device_list.next,
struct egl_input_device, link); struct wlsc_input_device, link);
while (&eid->link != &ec->input_device_list) { while (&eid->link != &ec->input_device_list) {
draw_surface(eid->pointer_surface); draw_surface(eid->pointer_surface);
eid = container_of(eid->link.next, eid = container_of(eid->link.next,
struct egl_input_device, link); struct wlsc_input_device, link);
} }
eglSwapBuffers(ec->display, ec->surface); eglSwapBuffers(ec->display, ec->surface);
@ -706,7 +702,7 @@ const static struct wl_compositor_interface compositor_interface = {
}; };
static struct egl_surface * static struct egl_surface *
pick_surface(struct egl_input_device *device) pick_surface(struct wlsc_input_device *device)
{ {
struct egl_compositor *ec = device->ec; struct egl_compositor *ec = device->ec;
struct egl_surface *es; struct egl_surface *es;
@ -731,7 +727,7 @@ pick_surface(struct egl_input_device *device)
} }
void void
notify_motion(struct egl_input_device *device, int x, int y) notify_motion(struct wlsc_input_device *device, int x, int y)
{ {
struct egl_surface *es; struct egl_surface *es;
struct egl_compositor *ec = device->ec; struct egl_compositor *ec = device->ec;
@ -765,7 +761,7 @@ notify_motion(struct egl_input_device *device, int x, int y)
} }
void void
notify_button(struct egl_input_device *device, notify_button(struct wlsc_input_device *device,
int32_t button, int32_t state) int32_t button, int32_t state)
{ {
struct egl_surface *es; struct egl_surface *es;
@ -799,7 +795,7 @@ notify_button(struct egl_input_device *device,
} }
void void
notify_key(struct egl_input_device *device, notify_key(struct wlsc_input_device *device,
uint32_t key, uint32_t state) uint32_t key, uint32_t state)
{ {
struct egl_compositor *ec = device->ec; struct egl_compositor *ec = device->ec;
@ -819,13 +815,13 @@ notify_key(struct egl_input_device *device,
} }
struct evdev_input_device * struct evdev_input_device *
evdev_input_device_create(struct egl_input_device *device, evdev_input_device_create(struct wlsc_input_device *device,
struct wl_display *display, const char *path); struct wl_display *display, const char *path);
static void static void
create_input_device(struct egl_compositor *ec, const char *glob) create_input_device(struct egl_compositor *ec, const char *glob)
{ {
struct egl_input_device *device; struct wlsc_input_device *device;
struct dirent *de; struct dirent *de;
char path[PATH_MAX]; char path[PATH_MAX];
const char *by_path_dir = "/dev/input/by-path"; const char *by_path_dir = "/dev/input/by-path";
@ -863,7 +859,7 @@ create_input_device(struct egl_compositor *ec, const char *glob)
} }
void void
egl_device_get_position(struct egl_input_device *device, int32_t *x, int32_t *y) wlsc_device_get_position(struct wlsc_input_device *device, int32_t *x, int32_t *y)
{ {
*x = device->x; *x = device->x;
*y = device->y; *y = device->y;

@ -0,0 +1,36 @@
/*
* Copyright © 2008 Kristian Høgsberg
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _WAYLAND_SYSTEM_COMPOSITOR_H_
#define _WAYLAND_SYSTEM_COMPOSITOR_H_
struct wlsc_input_device;
void
wlsc_device_get_position(struct wlsc_input_device *device, int32_t *x, int32_t *y);
void
notify_motion(struct wlsc_input_device *device, int x, int y);
void
notify_button(struct wlsc_input_device *device, int32_t button, int32_t state);
void
notify_key(struct wlsc_input_device *device, uint32_t key, uint32_t state);
struct evdev_input_device *
evdev_input_device_create(struct wlsc_input_device *device,
struct wl_display *display, const char *path);
#endif
Loading…
Cancel
Save