wl_display_set_compositor(display, &ec->base);
- if (wl_display_add_socket(display, socket_name)) {
+ if (wl_display_add_socket(display, socket_name, sizeof socket_name)) {
fprintf(stderr, "failed to add socket: %m\n");
exit(EXIT_FAILURE);
}
loop = g_main_loop_new(NULL, FALSE);
- display = wl_display_create(socket_name);
+ display = wl_display_create(socket_name, sizeof socket_name);
if (display == NULL) {
fprintf(stderr, "failed to create display: %m\n");
return -1;
wl_display_set_compositor(display, &gc->base);
- if (wl_display_add_socket(display, socket_name)) {
+ if (wl_display_add_socket(display, socket_name, sizeof socket_name)) {
fprintf(stderr, "failed to add socket: %m\n");
exit(EXIT_FAILURE);
}
GSource *source;
struct screenshooter *s;
- display = wl_display_create(socket_name);
+ display = wl_display_create(socket_name, sizeof socket_name);
if (display == NULL) {
fprintf(stderr, "failed to create display: %m\n");
return -1;
}
WL_EXPORT struct wl_display *
-wl_display_create(const char *address)
+wl_display_create(const char *name, size_t name_size)
{
struct wl_display *display;
struct wl_global *global;
- struct sockaddr_un name;
+ struct sockaddr_un addr;
socklen_t size;
char buffer[256];
uint32_t id, length, count, i;
return NULL;
}
- name.sun_family = AF_LOCAL;
- memcpy(name.sun_path, address, strlen(address + 1) + 2);
+ addr.sun_family = AF_LOCAL;
+ memcpy(addr.sun_path, name, name_size);
- size = offsetof (struct sockaddr_un, sun_path) + sizeof socket_name;
+ size = offsetof (struct sockaddr_un, sun_path) + name_size;
- if (connect(display->fd, (struct sockaddr *) &name, size) < 0) {
+ if (connect(display->fd, (struct sockaddr *) &addr, size) < 0) {
close(display->fd);
free(display);
return NULL;
typedef int (*wl_display_update_func_t)(uint32_t mask, void *data);
-struct wl_display *wl_display_create(const char *address);
+struct wl_display *wl_display_create(const char *name, size_t name_size);
void wl_display_destroy(struct wl_display *display);
int wl_display_get_fd(struct wl_display *display,
wl_display_update_func_t update, void *data);
struct wl_object *object;
struct wl_list link;
};
-
+
static void
wl_surface_destroy(struct wl_client *client,
struct wl_surface *surface)
}
WL_EXPORT int
-wl_display_add_socket(struct wl_display *display, const char *socket_name)
+wl_display_add_socket(struct wl_display *display,
+ const char *name, size_t name_size)
{
- struct sockaddr_un name;
+ struct sockaddr_un addr;
int sock;
socklen_t size;
if (sock < 0)
return -1;
- name.sun_family = AF_LOCAL;
- memcpy(name.sun_path, socket_name, sizeof socket_name);
+ addr.sun_family = AF_LOCAL;
+ memcpy(addr.sun_path, name, name_size);
- size = offsetof (struct sockaddr_un, sun_path) + sizeof socket_name;
- if (bind(sock, (struct sockaddr *) &name, size) < 0)
+ size = offsetof (struct sockaddr_un, sun_path) + name_size;
+ if (bind(sock, (struct sockaddr *) &addr, size) < 0)
return -1;
if (listen(sock, 1) < 0)
struct wl_display *wl_display_create(void);
struct wl_event_loop *wl_display_get_event_loop(struct wl_display *display);
-int wl_display_add_socket(struct wl_display *display, const char *socket_name);
+int wl_display_add_socket(struct wl_display *display, const char *name, size_t name_size);
void wl_display_run(struct wl_display *display);
void
buffer->name, buffer->stride,
0, 0, buffer->width, buffer->height);
wl_display_commit(window->display, 0);
- window->gears_angle += 1;
+ window->gears_angle += 1;
} else if (object == 1) {
fprintf(stderr, "unexpected event from display: %d\n",
return -1;
}
- display = wl_display_create(socket_name);
+ display = wl_display_create(socket_name, sizeof socket_name);
if (display == NULL) {
fprintf(stderr, "failed to create display: %m\n");
return -1;