parent
c37c57aec7
commit
a1f3f60bea
@ -0,0 +1,137 @@ |
||||
<protocol> |
||||
|
||||
<interface name="display" version="1"> |
||||
<event name="invalid_object"> |
||||
<arg name="object_id" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="invalid_method"> |
||||
<arg name="object_id" type="uint"/> |
||||
<arg name="opcode" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="no_memory"/> |
||||
|
||||
<event name="global"> |
||||
<arg name="id" type="new_id"/> |
||||
<arg name="name" type="string"/> |
||||
<arg name="version" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="range"> |
||||
<arg name="base" type="uint"/> |
||||
</event> |
||||
</interface> |
||||
|
||||
<interface name="compositor" version="1"> |
||||
<request name="create_surface"> |
||||
<arg name="id" type="new_id"/> |
||||
</request> |
||||
|
||||
<request name="commit"> |
||||
<arg name="key" type="uint"/> |
||||
</request> |
||||
|
||||
<event name="device"> |
||||
<arg name="name" type="string"/> |
||||
</event> |
||||
|
||||
<event name="acknowledge"> |
||||
<arg name="key" type="uint"/> |
||||
<arg name="frame" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="frame"> |
||||
<arg name="frame" type="uint"/> |
||||
<arg name="timestamp" type="uint"/> |
||||
</event> |
||||
</interface> |
||||
|
||||
<interface name="shell" version="1"> |
||||
<request name="move"> |
||||
<arg name="time" type="uint"/> |
||||
</request> |
||||
|
||||
<request name="resize"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="edges" type="uint"/> |
||||
</request> |
||||
|
||||
<event name="configure"> |
||||
<arg name="surface" type="surface"/> |
||||
<arg name="x" type="int"/> |
||||
<arg name="y" type="int"/> |
||||
<arg name="width" type="int"/> |
||||
<arg name="height" type="int"/> |
||||
</event> |
||||
</interface> |
||||
|
||||
<interface name="surface" version="1"> |
||||
<request name="destroy"/> |
||||
|
||||
<request name="attach"> |
||||
<arg name="name" type="uint"/> |
||||
<arg name="width" type="int"/> |
||||
<arg name="height" type="int"/> |
||||
<arg name="stride" type="uint"/> |
||||
<arg name="visual" type="visual"/> |
||||
</request> |
||||
|
||||
<request name="map"> |
||||
<arg name="x" type="int"/> |
||||
<arg name="y" type="int"/> |
||||
<arg name="width" type="int"/> |
||||
<arg name="height" type="int"/> |
||||
</request> |
||||
|
||||
<request name="damage"> |
||||
<arg name="x" type="int"/> |
||||
<arg name="y" type="int"/> |
||||
<arg name="width" type="int"/> |
||||
<arg name="height" type="int"/> |
||||
</request> |
||||
</interface> |
||||
|
||||
<interface name="input_device" version="1"> |
||||
<event name="motion"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="x" type="int"/> |
||||
<arg name="y" type="int"/> |
||||
<arg name="surface_x" type="int"/> |
||||
<arg name="surface_y" type="int"/> |
||||
</event> |
||||
|
||||
<event name="button"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="button" type="uint"/> |
||||
<arg name="state" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="key"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="key" type="uint"/> |
||||
<arg name="state" type="uint"/> |
||||
</event> |
||||
|
||||
<event name="pointer_focus"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="surface" type="surface"/> |
||||
</event> |
||||
|
||||
<event name="keyboard_focus"> |
||||
<arg name="time" type="uint"/> |
||||
<arg name="surface" type="surface"/> |
||||
<arg name="keys" type="array"/> |
||||
</event> |
||||
</interface> |
||||
|
||||
<interface name="output" version="1"> |
||||
<event name="geometry"> |
||||
<arg name="width" type="int"/> |
||||
<arg name="height" type="int"/> |
||||
</event> |
||||
</interface> |
||||
|
||||
<interface name="visual" version="1"> |
||||
|
||||
</protocol> |
@ -0,0 +1,443 @@ |
||||
/*
|
||||
* Copyright © 2010 Intel Corporation |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
#include <stdio.h> |
||||
#include <string.h> |
||||
#include <errno.h> |
||||
#include <ctype.h> |
||||
#include <expat.h> |
||||
|
||||
#include "wayland-util.h" |
||||
|
||||
static const char copyright[] = |
||||
"/*\n" |
||||
" * Copyright © 2010 Kristian Høgsberg\n" |
||||
" *\n" |
||||
" * Permission to use, copy, modify, distribute, and sell this software and its\n" |
||||
" * documentation for any purpose is hereby granted without fee, provided that\n" |
||||
" * the above copyright notice appear in all copies and that both that copyright\n" |
||||
" * notice and this permission notice appear in supporting documentation, and\n" |
||||
" * that the name of the copyright holders not be used in advertising or\n" |
||||
" * publicity pertaining to distribution of the software without specific,\n" |
||||
" * written prior permission. The copyright holders make no representations\n" |
||||
" * about the suitability of this software for any purpose. It is provided \"as\n" |
||||
" * is\" without express or implied warranty.\n" |
||||
" *\n" |
||||
" * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\n" |
||||
" * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO\n" |
||||
" * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR\n" |
||||
" * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,\n" |
||||
" * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n" |
||||
" * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE\n" |
||||
" * OF THIS SOFTWARE.\n" |
||||
" */\n"; |
||||
|
||||
static int |
||||
usage(int ret) |
||||
{ |
||||
fprintf(stderr, "usage: ./scanner [header|code]\n"); |
||||
exit(ret); |
||||
} |
||||
|
||||
#define XML_BUFFER_SIZE 4096 |
||||
|
||||
struct protocol { |
||||
struct wl_list interface_list; |
||||
}; |
||||
|
||||
struct interface { |
||||
char *name; |
||||
char *uppercase_name; |
||||
int version; |
||||
struct wl_list request_list; |
||||
struct wl_list event_list; |
||||
struct wl_list link; |
||||
}; |
||||
|
||||
struct message { |
||||
char *name; |
||||
char *uppercase_name; |
||||
struct wl_list arg_list; |
||||
struct wl_list link; |
||||
}; |
||||
|
||||
enum arg_type { |
||||
NEW_ID, |
||||
INT, |
||||
UNSIGNED, |
||||
STRING, |
||||
OBJECT, |
||||
ARRAY |
||||
}; |
||||
|
||||
struct arg { |
||||
char *name; |
||||
enum arg_type type; |
||||
char *object_name; |
||||
struct wl_list link; |
||||
}; |
||||
|
||||
struct parse_context { |
||||
struct protocol *protocol; |
||||
struct interface *interface; |
||||
struct message *message; |
||||
}; |
||||
|
||||
static char * |
||||
uppercase_dup(const char *src) |
||||
{ |
||||
char *u; |
||||
int i; |
||||
|
||||
u = strdup(src); |
||||
for (i = 0; u[i]; i++) |
||||
u[i] = toupper(u[i]); |
||||
u[i] = '\0'; |
||||
|
||||
return u; |
||||
} |
||||
|
||||
static void |
||||
start_element(void *data, const char *element_name, const char **atts) |
||||
{ |
||||
struct parse_context *ctx = data; |
||||
struct interface *interface; |
||||
struct message *message; |
||||
struct arg *arg; |
||||
const char *name, *type; |
||||
int i, version; |
||||
|
||||
name = 0; |
||||
type = 0; |
||||
version = 0; |
||||
for (i = 0; atts[i]; i += 2) { |
||||
if (strcmp(atts[i], "name") == 0) |
||||
name = atts[i + 1]; |
||||
if (strcmp(atts[i], "version") == 0) |
||||
version = atoi(atts[i + 1]); |
||||
if (strcmp(atts[i], "type") == 0) |
||||
type = atts[i + 1]; |
||||
} |
||||
|
||||
if (strcmp(element_name, "interface") == 0) { |
||||
if (name == NULL) { |
||||
fprintf(stderr, "no interface name given\n"); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
|
||||
if (version == 0) { |
||||
fprintf(stderr, "no interface version given\n"); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
|
||||
interface = malloc(sizeof *interface); |
||||
interface->name = strdup(name); |
||||
interface->uppercase_name = uppercase_dup(name); |
||||
interface->version = version; |
||||
wl_list_init(&interface->request_list); |
||||
wl_list_init(&interface->event_list); |
||||
wl_list_insert(ctx->protocol->interface_list.prev, |
||||
&interface->link); |
||||
ctx->interface = interface; |
||||
} else if (strcmp(element_name, "request") == 0 || |
||||
strcmp(element_name, "event") == 0) { |
||||
if (name == NULL) { |
||||
fprintf(stderr, "no request name given\n"); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
|
||||
message = malloc(sizeof *message); |
||||
message->name = strdup(name); |
||||
message->uppercase_name = uppercase_dup(name); |
||||
wl_list_init(&message->arg_list); |
||||
|
||||
if (strcmp(element_name, "request") == 0) |
||||
wl_list_insert(ctx->interface->request_list.prev, |
||||
&message->link); |
||||
else |
||||
wl_list_insert(ctx->interface->event_list.prev, |
||||
&message->link); |
||||
|
||||
ctx->message = message; |
||||
} else if (strcmp(element_name, "arg") == 0) { |
||||
arg = malloc(sizeof *arg); |
||||
arg->name = strdup(name); |
||||
|
||||
if (strcmp(type, "new_id") == 0) |
||||
arg->type = NEW_ID; |
||||
else if (strcmp(type, "int") == 0) |
||||
arg->type = INT; |
||||
else if (strcmp(type, "uint") == 0) |
||||
arg->type = UNSIGNED; |
||||
else if (strcmp(type, "string") == 0) |
||||
arg->type = STRING; |
||||
else if (strcmp(type, "array") == 0) |
||||
arg->type = ARRAY; |
||||
else { |
||||
arg->type = OBJECT; |
||||
arg->object_name = strdup(type); |
||||
} |
||||
|
||||
wl_list_insert(ctx->message->arg_list.prev, |
||||
&arg->link); |
||||
} |
||||
} |
||||
|
||||
static void |
||||
emit_opcodes(struct wl_list *message_list, struct interface *interface) |
||||
{ |
||||
struct message *m; |
||||
int opcode; |
||||
|
||||
if (wl_list_empty(message_list)) |
||||
return; |
||||
|
||||
opcode = 0; |
||||
wl_list_for_each(m, message_list, link) |
||||
printf("#define WL_%s_%s\t%d\n", |
||||
interface->uppercase_name, m->uppercase_name, opcode++); |
||||
|
||||
printf("\n"); |
||||
} |
||||
|
||||
static void |
||||
emit_structs(struct wl_list *message_list, struct interface *interface) |
||||
{ |
||||
struct message *m; |
||||
struct arg *a; |
||||
int is_interface; |
||||
|
||||
is_interface = message_list == &interface->request_list; |
||||
printf("struct wl_%s_%s {\n", interface->name, |
||||
is_interface ? "interface" : "listener"); |
||||
|
||||
wl_list_for_each(m, message_list, link) { |
||||
printf("\tvoid (*%s)(", m->name); |
||||
|
||||
if (is_interface) { |
||||
printf("struct wl_client *client, struct wl_%s *%s", |
||||
interface->name, interface->name); |
||||
} else { |
||||
printf("void *data, struct wl_%s *%s", |
||||
interface->name, interface->name); |
||||
} |
||||
|
||||
if (!wl_list_empty(&m->arg_list)) |
||||
printf(", "); |
||||
|
||||
wl_list_for_each(a, &m->arg_list, link) { |
||||
switch (a->type) { |
||||
default: |
||||
case INT: |
||||
printf("int32_t "); |
||||
break; |
||||
case NEW_ID: |
||||
case UNSIGNED: |
||||
printf("uint32_t "); |
||||
break; |
||||
case STRING: |
||||
printf("const char *"); |
||||
break; |
||||
case OBJECT: |
||||
printf("struct wl_%s *", a->object_name); |
||||
break; |
||||
case ARRAY: |
||||
printf("struct wl_array *"); |
||||
break; |
||||
} |
||||
printf("%s%s", |
||||
a->name, |
||||
a->link.next == &m->arg_list ? "" : ", "); |
||||
} |
||||
|
||||
printf(");\n"); |
||||
} |
||||
|
||||
printf("};\n\n"); |
||||
} |
||||
|
||||
static void |
||||
emit_header(struct protocol *protocol, int server) |
||||
{ |
||||
struct interface *i; |
||||
|
||||
printf("%s\n\n" |
||||
"#ifndef WAYLAND_PROTOCOL_H\n" |
||||
"#define WAYLAND_PROTOCOL_H\n" |
||||
"\n" |
||||
"#ifdef __cplusplus\n" |
||||
"extern \"C\" {\n" |
||||
"#endif\n" |
||||
"\n" |
||||
"#include <stdint.h>\n" |
||||
"#include \"wayland-util.h\"\n\n" |
||||
"struct wl_client;\n\n", copyright); |
||||
|
||||
wl_list_for_each(i, &protocol->interface_list, link) |
||||
printf("struct wl_%s;\n", i->name); |
||||
printf("\n"); |
||||
|
||||
wl_list_for_each(i, &protocol->interface_list, link) { |
||||
|
||||
if (server) { |
||||
emit_structs(&i->request_list, i); |
||||
emit_opcodes(&i->event_list, i); |
||||
} else { |
||||
emit_structs(&i->event_list, i); |
||||
emit_opcodes(&i->request_list, i); |
||||
} |
||||
|
||||
printf("extern const struct wl_interface " |
||||
"wl_%s_interface;\n\n", |
||||
i->name); |
||||
} |
||||
|
||||
printf("#ifdef __cplusplus\n" |
||||
"}\n" |
||||
"#endif\n" |
||||
"\n" |
||||
"#endif\n"); |
||||
} |
||||
|
||||
static void |
||||
emit_messages(struct wl_list *message_list, |
||||
struct interface *interface, const char *suffix) |
||||
{ |
||||
struct message *m; |
||||
struct arg *a; |
||||
|
||||
if (wl_list_empty(message_list)) |
||||
return; |
||||
|
||||
printf("static const struct wl_message " |
||||
"%s_%s[] = {\n", |
||||
interface->name, suffix); |
||||
|
||||
wl_list_for_each(m, message_list, link) { |
||||
printf("\t{ \"%s\", \"", m->name); |
||||
wl_list_for_each(a, &m->arg_list, link) { |
||||
switch (a->type) { |
||||
default: |
||||
case INT: |
||||
printf("i"); |
||||
break; |
||||
case NEW_ID: |
||||
printf("n"); |
||||
break; |
||||
case UNSIGNED: |
||||
printf("u"); |
||||
break; |
||||
case STRING: |
||||
printf("s"); |
||||
break; |
||||
case OBJECT: |
||||
printf("o"); |
||||
break; |
||||
case ARRAY: |
||||
printf("a"); |
||||
break; |
||||
} |
||||
} |
||||
printf("\" },\n"); |
||||
} |
||||
|
||||
printf("};\n\n"); |
||||
} |
||||
|
||||
static void |
||||
emit_code(struct protocol *protocol) |
||||
{ |
||||
struct interface *i; |
||||
|
||||
printf("%s\n\n" |
||||
"#include <stdlib.h>\n" |
||||
"#include <stdint.h>\n" |
||||
"#include \"wayland-util.h\"\n\n", |
||||
copyright); |
||||
|
||||
wl_list_for_each(i, &protocol->interface_list, link) { |
||||
|
||||
emit_messages(&i->request_list, i, "requests"); |
||||
emit_messages(&i->event_list, i, "events"); |
||||
|
||||
printf("WL_EXPORT const struct wl_interface " |
||||
"wl_%s_interface = {\n" |
||||
"\t\"%s\", %d,\n", |
||||
i->name, i->name, i->version); |
||||
|
||||
if (!wl_list_empty(&i->request_list)) |
||||
printf("\tARRAY_LENGTH(%s_requests), %s_requests,\n", |
||||
i->name, i->name); |
||||
else |
||||
printf("\t0, NULL,\n"); |
||||
|
||||
if (!wl_list_empty(&i->event_list)) |
||||
printf("\tARRAY_LENGTH(%s_events), %s_events,\n", |
||||
i->name, i->name); |
||||
else |
||||
printf("\t0, NULL,\n"); |
||||
|
||||
printf("};\n\n"); |
||||
} |
||||
} |
||||
|
||||
int main(int argc, char *argv[]) |
||||
{ |
||||
struct parse_context ctx; |
||||
struct protocol protocol; |
||||
XML_Parser parser; |
||||
int len; |
||||
void *buf; |
||||
|
||||
if (argc != 2) |
||||
usage(EXIT_FAILURE); |
||||
|
||||
wl_list_init(&protocol.interface_list); |
||||
ctx.protocol = &protocol; |
||||
|
||||
parser = XML_ParserCreate(NULL); |
||||
XML_SetUserData(parser, &ctx); |
||||
if (parser == NULL) { |
||||
fprintf(stderr, "failed to create parser\n"); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
|
||||
XML_SetElementHandler(parser, start_element, NULL); |
||||
do { |
||||
buf = XML_GetBuffer(parser, XML_BUFFER_SIZE); |
||||
len = fread(buf, 1, XML_BUFFER_SIZE, stdin); |
||||
if (len < 0) { |
||||
fprintf(stderr, "fread: %s\n", strerror(errno)); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
XML_ParseBuffer(parser, len, len == 0); |
||||
|
||||
} while (len > 0); |
||||
|
||||
XML_ParserFree(parser); |
||||
|
||||
if (strcmp(argv[1], "client-header") == 0) { |
||||
emit_header(&protocol, 0); |
||||
} else if (strcmp(argv[1], "server-header") == 0) { |
||||
emit_header(&protocol, 1); |
||||
} else if (strcmp(argv[1], "code") == 0) { |
||||
emit_code(&protocol); |
||||
} |
||||
|
||||
return 0; |
||||
} |
@ -1,104 +0,0 @@ |
||||
/*
|
||||
* Copyright © 2008 Kristian Høgsberg |
||||
* |
||||
* 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 <stdlib.h> |
||||
#include <stdint.h> |
||||
#include "wayland-util.h" |
||||
#include "wayland-protocol.h" |
||||
|
||||
static const struct wl_message display_events[] = { |
||||
{ "invalid_object", "u" }, |
||||
{ "invalid_method", "uu" }, |
||||
{ "no_memory", "" }, |
||||
{ "global", "nsu" }, |
||||
{ "range", "u" }, |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_display_interface = { |
||||
"display", 1, |
||||
0, NULL, |
||||
ARRAY_LENGTH(display_events), display_events, |
||||
}; |
||||
|
||||
|
||||
static const struct wl_message compositor_methods[] = { |
||||
{ "create_surface", "n" }, |
||||
{ "commit", "u" } |
||||
}; |
||||
|
||||
static const struct wl_message compositor_events[] = { |
||||
{ "device", "s" }, |
||||
{ "acknowledge", "uu" }, |
||||
{ "frame", "uu" } |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_compositor_interface = { |
||||
"compositor", 1, |
||||
ARRAY_LENGTH(compositor_methods), compositor_methods, |
||||
ARRAY_LENGTH(compositor_events), compositor_events, |
||||
}; |
||||
|
||||
|
||||
static const struct wl_message surface_methods[] = { |
||||
{ "destroy", "" }, |
||||
{ "attach", "uuuuo" }, |
||||
{ "map", "iiii" }, |
||||
{ "damage", "iiii" } |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_surface_interface = { |
||||
"surface", 1, |
||||
ARRAY_LENGTH(surface_methods), surface_methods, |
||||
0, NULL, |
||||
}; |
||||
|
||||
|
||||
static const struct wl_message input_device_events[] = { |
||||
{ "motion", "uiiii" }, |
||||
{ "button", "uuu" }, |
||||
{ "key", "uuu" }, |
||||
{ "pointer_focus", "uo" }, |
||||
{ "keyboard_focus", "uoa" }, |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_input_device_interface = { |
||||
"input_device", 1, |
||||
0, NULL, |
||||
ARRAY_LENGTH(input_device_events), input_device_events, |
||||
}; |
||||
|
||||
|
||||
static const struct wl_message output_events[] = { |
||||
{ "geometry", "uu" }, |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_output_interface = { |
||||
"output", 1, |
||||
0, NULL, |
||||
ARRAY_LENGTH(output_events), output_events, |
||||
}; |
||||
|
||||
WL_EXPORT const struct wl_interface wl_visual_interface = { |
||||
"visual", 1, |
||||
0, NULL, |
||||
0, NULL, |
||||
}; |
@ -1,79 +0,0 @@ |
||||
/*
|
||||
* Copyright © 2008 Kristian Høgsberg |
||||
* |
||||
* 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 |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
#include <stdint.h> |
||||
|
||||
#define WL_DISPLAY_INVALID_OBJECT 0 |
||||
#define WL_DISPLAY_INVALID_METHOD 1 |
||||
#define WL_DISPLAY_NO_MEMORY 2 |
||||
#define WL_DISPLAY_GLOBAL 3 |
||||
#define WL_DISPLAY_RANGE 4 |
||||
|
||||
extern const struct wl_interface wl_display_interface; |
||||
|
||||
|
||||
#define WL_COMPOSITOR_CREATE_SURFACE 0 |
||||
#define WL_COMPOSITOR_COMMIT 1 |
||||
|
||||
#define WL_COMPOSITOR_DEVICE 0 |
||||
#define WL_COMPOSITOR_ACKNOWLEDGE 1 |
||||
#define WL_COMPOSITOR_FRAME 2 |
||||
|
||||
extern const struct wl_interface wl_compositor_interface; |
||||
|
||||
|
||||
#define WL_SURFACE_DESTROY 0 |
||||
#define WL_SURFACE_ATTACH 1 |
||||
#define WL_SURFACE_MAP 2 |
||||
#define WL_SURFACE_DAMAGE 3 |
||||
|
||||
extern const struct wl_interface wl_surface_interface; |
||||
|
||||
|
||||
#define WL_INPUT_MOTION 0 |
||||
#define WL_INPUT_BUTTON 1 |
||||
#define WL_INPUT_KEY 2 |
||||
#define WL_INPUT_POINTER_FOCUS 3 |
||||
#define WL_INPUT_KEYBOARD_FOCUS 4 |
||||
|
||||
extern const struct wl_interface wl_input_device_interface; |
||||
|
||||
|
||||
#define WL_OUTPUT_GEOMETRY 0 |
||||
|
||||
extern const struct wl_interface wl_output_interface; |
||||
|
||||
|
||||
extern const struct wl_interface wl_visual_interface; |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif |
Loading…
Reference in new issue