Add signedness warning flag and fix fallout
diff --git a/clients/dnd.c b/clients/dnd.c
index 91a7365..e3d3c34 100644
--- a/clients/dnd.c
+++ b/clients/dnd.c
@@ -168,7 +168,7 @@
 	struct rectangle allocation;
 	cairo_t *cr;
 	cairo_surface_t *surface;
-	int i;
+	unsigned int i;
 
 	surface = window_get_surface(dnd->window);
 	cr = cairo_create(surface);
@@ -206,7 +206,7 @@
 static int
 dnd_add_item(struct dnd *dnd, struct item *item)
 {
-	int i;
+	unsigned int i;
 
 	for (i = 0; i < ARRAY_LENGTH(dnd->items); i++) {
 		if (dnd->items[i] == 0) {
@@ -222,7 +222,7 @@
 {
 	struct item *item;
 	struct rectangle allocation;
-	int i;
+	unsigned int i;
 
 	widget_get_allocation(dnd->widget, &allocation);
 
@@ -369,7 +369,7 @@
 	struct display *display;
 	struct wl_compositor *compositor;
 	struct wl_buffer *buffer;
-	int i;
+	unsigned int i;
 
 	widget_get_allocation(dnd->widget, &allocation);
 	input_get_position(input, &x, &y);
@@ -518,8 +518,9 @@
 dnd_create(struct display *display)
 {
 	struct dnd *dnd;
-	int i, x, y;
+	int x, y;
 	int32_t width, height;
+	unsigned int i;
 
 	dnd = malloc(sizeof *dnd);
 	if (dnd == NULL)
diff --git a/clients/eventdemo.c b/clients/eventdemo.c
index 5d0cc90..0848fc8 100644
--- a/clients/eventdemo.c
+++ b/clients/eventdemo.c
@@ -86,7 +86,7 @@
 	struct widget *widget;
 	struct display *display;
 
-	unsigned int x, y, w, h;
+	int x, y, w, h;
 };
 
 /**
diff --git a/clients/gears.c b/clients/gears.c
index 1aecd45..ca1fda2 100644
--- a/clients/gears.c
+++ b/clients/gears.c
@@ -63,7 +63,7 @@
 	GLfloat tooth_depth;
 };
 
-const static struct gear_template gear_templates[] = {
+static const struct gear_template gear_templates[] = {
 	{ { 0.8, 0.1, 0.0, 1.0 }, 1.0, 4.0, 1.0, 20, 0.7 },
 	{ { 0.0, 0.8, 0.2, 1.0 }, 0.5, 2.0, 2.0, 10, 0.7 },
 	{ { 0.2, 0.2, 1.0, 1.0 }, 1.3, 2.0, 0.5, 10, 0.7 }, 
diff --git a/clients/glmatrix.c b/clients/glmatrix.c
index 6312ff4..4c5754e 100644
--- a/clients/glmatrix.c
+++ b/clients/glmatrix.c
@@ -257,7 +257,7 @@
         (i < GRID_SIZE-5) &&   /* display approx. once per 5 strips */
 	!(random() % (GRID_SIZE-5)*5))
       {
-	int j;
+        unsigned int j;
 	char text[80];
         time_t now = time ((time_t *) 0);
         struct tm *tm = localtime (&now);
diff --git a/clients/simple-touch.c b/clients/simple-touch.c
index ade720e..0e2bac6 100644
--- a/clients/simple-touch.c
+++ b/clients/simple-touch.c
@@ -166,7 +166,7 @@
 		0xffff00ff,
 	};
 
-	if (id < ARRAY_LENGTH(colors))
+	if (id < (int32_t) ARRAY_LENGTH(colors))
 		c = colors[id];
 	else
 		c = 0xffffffff;
diff --git a/clients/terminal.c b/clients/terminal.c
index 45d4f12..106e3d1 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -95,7 +95,7 @@
 }
 
 static enum utf8_state
-utf8_next_char(struct utf8_state_machine *machine, char c)
+utf8_next_char(struct utf8_state_machine *machine, unsigned char c)
 {
 	switch(machine->state) {
 	case utf8state_start:
@@ -861,7 +861,7 @@
 struct glyph_run {
 	struct terminal *terminal;
 	cairo_t *cr;
-	int count;
+	unsigned int count;
 	union decoded_attr attr;
 	cairo_glyph_t glyphs[256], *g;
 };
@@ -1864,7 +1864,7 @@
 static void
 terminal_data(struct terminal *terminal, const char *data, size_t length)
 {
-	int i;
+	unsigned int i;
 	union utf8_char utf8;
 	enum utf8_state parser_state;
 
diff --git a/clients/window.c b/clients/window.c
index 75e3b84..74ddedd 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -166,7 +166,7 @@
 	struct wl_input_device *input_device;
 	struct window *pointer_focus;
 	struct window *keyboard_focus;
-	uint32_t current_pointer_image;
+	int current_pointer_image;
 	uint32_t modifiers;
 	int32_t sx, sy;
 	struct wl_list link;
diff --git a/clients/wscreensaver.h b/clients/wscreensaver.h
index 42f0be4..e2749d9 100644
--- a/clients/wscreensaver.h
+++ b/clients/wscreensaver.h
@@ -39,8 +39,8 @@
 	struct widget *widget;
 
 	int instance_number;
-	unsigned width;
-	unsigned height;
+	int width;
+	int height;
 
 	unsigned long polygon_count;
 	int fps_p;
diff --git a/configure.ac b/configure.ac
index f60b208..ffed655 100644
--- a/configure.ac
+++ b/configure.ac
@@ -170,7 +170,10 @@
 AM_CONDITIONAL(BUILD_TESTS, test x$enable_tests = xyes)
 
 if test "x$GCC" = "xyes"; then
-	GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden"
+	GCC_CFLAGS="-Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
+		-Wno-unused-parameter -Wno-missing-field-initializers \
+		-g -fvisibility=hidden"
+
 fi
 AC_SUBST(GCC_CFLAGS)
 
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 39b7a1b..d428c82 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -382,7 +382,7 @@
 static int
 drm_surface_format_supported(struct drm_sprite *s, uint32_t format)
 {
-	int i;
+	uint32_t i;
 
 	for (i = 0; i < s->count_formats; i++)
 		if (s->formats[i] == format)
@@ -991,7 +991,7 @@
 	if (!output->backlight)
 		return;
 
-	if (value < 0 || value > 255)
+	if (value > 255)
 		return;
 
 	max_brightness = backlight_get_max_brightness(output->backlight);
@@ -1182,7 +1182,7 @@
 	struct drm_sprite *sprite;
 	drmModePlaneRes *plane_res;
 	drmModePlane *plane;
-	int i;
+	uint32_t i;
 
 	plane_res = drmModeGetPlaneResources(ec->drm.fd);
 	if (!plane_res) {
@@ -1249,7 +1249,7 @@
 }
 
 static int
-create_outputs(struct drm_compositor *ec, int option_connector,
+create_outputs(struct drm_compositor *ec, uint32_t option_connector,
 	       struct udev_device *drm_device)
 {
 	drmModeConnector *connector;
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index e28fc94..d0203ca 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -554,7 +554,7 @@
 	xcb_focus_in_event_t *focus_in;
 	xcb_atom_t atom;
 	uint32_t *k;
-	int i, set;
+	uint32_t i, set;
 
 	prev = NULL;
 	while (x11_compositor_next_event(c, &event, mask)) {
@@ -740,7 +740,7 @@
 	xcb_intern_atom_reply_t *reply;
 	xcb_pixmap_t pixmap;
 	xcb_gc_t gc;
-	int i;
+	unsigned int i;
 	uint8_t data[] = { 0, 0, 0, 0 };
 
 	for (i = 0; i < ARRAY_LENGTH(atoms); i++)
diff --git a/src/compositor.c b/src/compositor.c
index 60142d1..1fce69a 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1276,7 +1276,7 @@
 	weston_compositor_schedule_repaint(surface->compositor);
 }
 
-const static struct wl_surface_interface surface_interface = {
+static const struct wl_surface_interface surface_interface = {
 	surface_destroy,
 	surface_attach,
 	surface_damage,
@@ -1378,7 +1378,7 @@
 	wl_client_add_resource(client, &region->resource);
 }
 
-const static struct wl_compositor_interface compositor_interface = {
+static const struct wl_compositor_interface compositor_interface = {
 	compositor_create_surface,
 	compositor_create_region
 };
@@ -1904,7 +1904,7 @@
 		       0, 0, buffer->width, buffer->height);
 }
 
-const static struct wl_input_device_interface input_device_interface = {
+static const struct wl_input_device_interface input_device_interface = {
 	input_device_attach,
 };
 
@@ -2514,11 +2514,11 @@
 	char *socket_name = NULL;
 	char *config_file;
 
-	const const struct config_key shell_config_keys[] = {
+	const struct config_key shell_config_keys[] = {
 		{ "type", CONFIG_KEY_STRING, &shell },
 	};
 
-	const const struct config_section cs[] = {
+	const struct config_section cs[] = {
 		{ "shell",
 		  shell_config_keys, ARRAY_LENGTH(shell_config_keys) },
 	};
diff --git a/src/hash.c b/src/hash.c
index 1dbee82..d841883 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -212,7 +212,7 @@
 }
 
 static void
-hash_table_rehash(struct hash_table *ht, int new_size_index)
+hash_table_rehash(struct hash_table *ht, unsigned int new_size_index)
 {
 	struct hash_table old_ht;
 	struct hash_entry *table, *entry;
diff --git a/src/shell.c b/src/shell.c
index 02f203a..46fa370 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1181,7 +1181,7 @@
 surface_opacity_binding(struct wl_input_device *device, uint32_t time,
 	       uint32_t key, uint32_t button, uint32_t axis, int32_t value, void *data)
 {
-	int step = 15;
+	uint32_t step = 15;
 	struct shell_surface *shsurf;
 	struct weston_surface *surface =
 		(struct weston_surface *) device->pointer_focus;
diff --git a/src/xserver-launcher.c b/src/xserver-launcher.c
index 33bd773..502b9d4 100644
--- a/src/xserver-launcher.c
+++ b/src/xserver-launcher.c
@@ -155,7 +155,8 @@
 	int32_t *incr_value;
 	const char *text_value, *name;
 	xcb_atom_t *atom_value;
-	int i, width, len;
+	int width, len;
+	uint32_t i;
 
 	width = fprintf(stderr, "  %s: ", get_atom_name(wm->conn, property));
 	if (reply == NULL) {
@@ -295,7 +296,7 @@
 	xcb_get_property_reply_t *reply;
 	xcb_atom_t *value;
 	char **p;
-	int i;
+	uint32_t i;
 
 	cookie = xcb_get_property(wm->conn,
 				  1, /* delete */
@@ -609,7 +610,7 @@
 	void *p;
 	uint32_t *xid;
 	xcb_atom_t *atom;
-	int i;
+	uint32_t i;
 
 	fprintf(stderr, "XCB_MAP_NOTIFY (window %d)\n", map_notify->window);
 
@@ -668,7 +669,7 @@
 	weston_wm_activate(wm, window, XCB_TIME_CURRENT_TIME);
 }
 
-static const int incr_chunk_size = 64 * 1024;
+static const size_t incr_chunk_size = 64 * 1024;
 
 static void
 weston_wm_send_selection_notify(struct weston_wm *wm, xcb_atom_t property)
@@ -1174,7 +1175,7 @@
 	xcb_xfixes_query_version_reply_t *xfixes_reply;
 	xcb_intern_atom_cookie_t cookies[ARRAY_LENGTH(atoms)];
 	xcb_intern_atom_reply_t *reply;
-	int i;
+	uint32_t i;
 
 	xcb_prefetch_extension_data (wm->conn, &xcb_xfixes_id);