mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	Update to track udev API change in eagle.
This commit is contained in:
		
							parent
							
								
									ff52fbaaf8
								
							
						
					
					
						commit
						aa68fe346a
					
				
					 3 changed files with 8 additions and 50 deletions
				
			
		| 
						 | 
					@ -7,7 +7,7 @@ PKG_CHECK_MODULES(LIBDRM, [libdrm])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_CHECK_MODULES(EGL_COMPOSITOR, [eagle libpng cairo gdk-pixbuf-2.0 libudev])
 | 
					PKG_CHECK_MODULES(EGL_COMPOSITOR, [eagle libpng cairo gdk-pixbuf-2.0 libudev])
 | 
				
			||||||
PKG_CHECK_MODULES(GL_COMPOSITOR, [gl x11])
 | 
					PKG_CHECK_MODULES(GL_COMPOSITOR, [gl x11])
 | 
				
			||||||
PKG_CHECK_MODULES(CLIENT, [eagle cairo glib-2.0])
 | 
					PKG_CHECK_MODULES(CLIENT, [eagle cairo glib-2.0 libudev])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test $CC = gcc; then
 | 
					if test $CC = gcc; then
 | 
				
			||||||
	GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden"
 | 
						GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								gears.c
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								gears.c
									
										
									
									
									
								
							| 
						 | 
					@ -341,9 +341,14 @@ gears_create(struct wl_display *display, int fd)
 | 
				
			||||||
	const int x = 200, y = 200, width = 450, height = 500;
 | 
						const int x = 200, y = 200, width = 450, height = 500;
 | 
				
			||||||
	EGLint major, minor, count;
 | 
						EGLint major, minor, count;
 | 
				
			||||||
	EGLConfig configs[64];
 | 
						EGLConfig configs[64];
 | 
				
			||||||
 | 
						struct udev *udev;
 | 
				
			||||||
 | 
						struct udev_device *device;
 | 
				
			||||||
	struct gears *gears;
 | 
						struct gears *gears;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						udev = udev_new();
 | 
				
			||||||
 | 
						device = udev_device_new_from_syspath(udev, "/sys/class/drm/card0");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gears = malloc(sizeof *gears);
 | 
						gears = malloc(sizeof *gears);
 | 
				
			||||||
	memset(gears, 0, sizeof *gears);
 | 
						memset(gears, 0, sizeof *gears);
 | 
				
			||||||
	gears->wl_display = display;
 | 
						gears->wl_display = display;
 | 
				
			||||||
| 
						 | 
					@ -351,7 +356,7 @@ gears_create(struct wl_display *display, int fd)
 | 
				
			||||||
	gears->window = window_create(display, fd, "Wayland Gears",
 | 
						gears->window = window_create(display, fd, "Wayland Gears",
 | 
				
			||||||
				      x, y, width, height);
 | 
									      x, y, width, height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gears->display = eglCreateDisplayNative("/dev/dri/card0", "i965");
 | 
						gears->display = eglCreateDisplayNative(device);
 | 
				
			||||||
	if (gears->display == NULL)
 | 
						if (gears->display == NULL)
 | 
				
			||||||
		die("failed to create egl display\n");
 | 
							die("failed to create egl display\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -793,44 +793,6 @@ get_udev_property(struct udev_device *device, const char *name)
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct dri_driver_entry {
 | 
					 | 
				
			||||||
	uint32_t vendor_id;
 | 
					 | 
				
			||||||
	uint32_t chip_id;
 | 
					 | 
				
			||||||
	const char *driver;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct dri_driver_entry driver_map[] = {
 | 
					 | 
				
			||||||
	/* FIXME: We need to extract this table from the dri drivers
 | 
					 | 
				
			||||||
	 * and store it on disk.  For now, map my i965 to i965,
 | 
					 | 
				
			||||||
	 * anything else intel to i915 and that's that. */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ 0x8086, 0x2a02, "i965" },
 | 
					 | 
				
			||||||
	{ 0x8086, ~0, "i915" },
 | 
					 | 
				
			||||||
	{ 0, }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const char *
 | 
					 | 
				
			||||||
get_driver_for_device(struct udev_device *device)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct udev_device *parent;
 | 
					 | 
				
			||||||
	const char *pci_id;
 | 
					 | 
				
			||||||
	uint32_t vendor_id, chip_id;
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	parent = udev_device_get_parent(device);
 | 
					 | 
				
			||||||
	pci_id = get_udev_property(parent, "PCI_ID");
 | 
					 | 
				
			||||||
	if (sscanf(pci_id, "%x:%x", &vendor_id, &chip_id) != 2)
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (i = 0; i < ARRAY_LENGTH(driver_map); i++) {
 | 
					 | 
				
			||||||
		if (driver_map[i].vendor_id == vendor_id &&
 | 
					 | 
				
			||||||
		    (driver_map[i].chip_id == ~0 || driver_map[i].chip_id == chip_id)) 
 | 
					 | 
				
			||||||
			return driver_map[i].driver;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
init_egl(struct egl_compositor *ec, struct udev_device *device)
 | 
					init_egl(struct egl_compositor *ec, struct udev_device *device)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -841,18 +803,9 @@ init_egl(struct egl_compositor *ec, struct udev_device *device)
 | 
				
			||||||
		EGL_NONE		
 | 
							EGL_NONE		
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const char *path, *driver;
 | 
					 | 
				
			||||||
	EGLint major, minor;
 | 
						EGLint major, minor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	path = udev_device_get_devnode(device);
 | 
						ec->display = eglCreateDisplayNative(device);
 | 
				
			||||||
	driver = get_driver_for_device(device);
 | 
					 | 
				
			||||||
	if (driver == NULL) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "didn't find driver for %s\n",
 | 
					 | 
				
			||||||
			udev_device_get_devpath(device));
 | 
					 | 
				
			||||||
		return -1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ec->display = eglCreateDisplayNative(path, driver);
 | 
					 | 
				
			||||||
	if (ec->display == NULL) {
 | 
						if (ec->display == NULL) {
 | 
				
			||||||
		fprintf(stderr, "failed to create display\n");
 | 
							fprintf(stderr, "failed to create display\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue