diff --git a/shared/config-parser.h b/shared/config-parser.h
index 314057a..1d0ee3f 100644
--- a/shared/config-parser.h
+++ b/shared/config-parser.h
@@ -23,6 +23,10 @@
 #ifndef CONFIGPARSER_H
 #define CONFIGPARSER_H
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum config_key_type {
 	CONFIG_KEY_INTEGER,		/* typeof data = int */
 	CONFIG_KEY_UNSIGNED_INTEGER,	/* typeof data = unsigned int */
@@ -69,5 +73,9 @@
 parse_options(const struct weston_option *options,
 	      int count, int *argc, char *argv[]);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* CONFIGPARSER_H */
 
diff --git a/shared/matrix.h b/shared/matrix.h
index 47354f6..e5cf636 100644
--- a/shared/matrix.h
+++ b/shared/matrix.h
@@ -24,6 +24,10 @@
 #ifndef WESTON_MATRIX_H
 #define WESTON_MATRIX_H
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum weston_matrix_transform_type {
 	WESTON_MATRIX_TRANSFORM_TRANSLATE	= (1 << 0),
 	WESTON_MATRIX_TRANSFORM_SCALE		= (1 << 1),
@@ -71,4 +75,8 @@
 #  define MATRIX_TEST_EXPORT static
 #endif
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* WESTON_MATRIX_H */
diff --git a/src/compositor.c b/src/compositor.c
index eb8d473..52d6f90 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2271,7 +2271,7 @@
 pointer_cursor_surface_configure(struct weston_surface *es,
 				 int32_t dx, int32_t dy, int32_t width, int32_t height)
 {
-	struct weston_seat *seat = es->private;
+	struct weston_seat *seat = es->configure_private;
 	int x, y;
 
 	if (width == 0)
@@ -2305,7 +2305,7 @@
 
 	wl_list_remove(&seat->sprite_destroy_listener.link);
 	seat->sprite->configure = NULL;
-	seat->sprite->private = NULL;
+	seat->sprite->configure_private = NULL;
 	seat->sprite = NULL;
 }
 
@@ -2347,7 +2347,7 @@
 		      &seat->sprite_destroy_listener);
 
 	surface->configure = pointer_cursor_surface_configure;
-	surface->private = seat;
+	surface->configure_private = seat;
 	seat->sprite = surface;
 	seat->hotspot_x = x;
 	seat->hotspot_y = y;
diff --git a/src/compositor.h b/src/compositor.h
index dc03aeb..0ad60ef 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -24,6 +24,10 @@
 #ifndef _WAYLAND_SYSTEM_COMPOSITOR_H_
 #define _WAYLAND_SYSTEM_COMPOSITOR_H_
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #include <pixman.h>
 #include <xkbcommon/xkbcommon.h>
 #include <wayland-server.h>
@@ -496,7 +500,7 @@
 	 * are the sx and sy paramerters supplied to surface::attach .
 	 */
 	void (*configure)(struct weston_surface *es, int32_t sx, int32_t sy, int32_t width, int32_t height);
-	void *private;
+	void *configure_private;
 };
 
 enum weston_key_state_update {
@@ -880,4 +884,8 @@
 			enum wl_output_transform transform,
 			pixman_box32_t rect);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
diff --git a/src/shell.c b/src/shell.c
index c6ff300..de5d6f6 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1676,7 +1676,7 @@
 	}
 
 	surface->configure = black_surface_configure;
-	surface->private = fs_surface;
+	surface->configure_private = fs_surface;
 	weston_surface_configure(surface, x, y, w, h);
 	weston_surface_set_color(surface, 0.0, 0.0, 0.0, 1);
 	pixman_region32_fini(&surface->opaque);
@@ -2142,7 +2142,7 @@
 get_shell_surface(struct weston_surface *surface)
 {
 	if (surface->configure == shell_surface_configure)
-		return surface->private;
+		return surface->configure_private;
 	else
 		return NULL;
 }
@@ -2165,7 +2165,7 @@
 	}
 
 	surface->configure = shell_surface_configure;
-	surface->private = shsurf;
+	surface->configure_private = shsurf;
 
 	shsurf->shell = (struct desktop_shell *) shell;
 	shsurf->unresponsive = 0;
@@ -2322,7 +2322,7 @@
 static void
 background_configure(struct weston_surface *es, int32_t sx, int32_t sy, int32_t width, int32_t height)
 {
-	struct desktop_shell *shell = es->private;
+	struct desktop_shell *shell = es->configure_private;
 
 	configure_static_surface(es, &shell->background_layer, width, height);
 }
@@ -2344,7 +2344,7 @@
 	}
 
 	surface->configure = background_configure;
-	surface->private = shell;
+	surface->configure_private = shell;
 	surface->output = output_resource->data;
 	desktop_shell_send_configure(resource, 0,
 				     surface_resource,
@@ -2355,7 +2355,7 @@
 static void
 panel_configure(struct weston_surface *es, int32_t sx, int32_t sy, int32_t width, int32_t height)
 {
-	struct desktop_shell *shell = es->private;
+	struct desktop_shell *shell = es->configure_private;
 
 	configure_static_surface(es, &shell->panel_layer, width, height);
 }
@@ -2377,7 +2377,7 @@
 	}
 
 	surface->configure = panel_configure;
-	surface->private = shell;
+	surface->configure_private = shell;
 	surface->output = output_resource->data;
 	desktop_shell_send_configure(resource, 0,
 				     surface_resource,
@@ -2388,7 +2388,7 @@
 static void
 lock_surface_configure(struct weston_surface *surface, int32_t sx, int32_t sy, int32_t width, int32_t height)
 {
-	struct desktop_shell *shell = surface->private;
+	struct desktop_shell *shell = surface->configure_private;
 
 	if (width == 0)
 		return;
@@ -2433,7 +2433,7 @@
 		      &shell->lock_surface_listener);
 
 	surface->configure = lock_surface_configure;
-	surface->private = shell;
+	surface->configure_private = shell;
 }
 
 static void
@@ -2858,7 +2858,7 @@
 {
 	if (es->configure == black_surface_configure) {
 		if (fs_surface)
-			*fs_surface = (struct weston_surface *)es->private;
+			*fs_surface = (struct weston_surface *)es->configure_private;
 		return true;
 	}
 	return false;
@@ -3413,7 +3413,7 @@
 static void
 screensaver_configure(struct weston_surface *surface, int32_t sx, int32_t sy, int32_t width, int32_t height)
 {
-	struct desktop_shell *shell = surface->private;
+	struct desktop_shell *shell = surface->configure_private;
 
 	if (width == 0)
 		return;
@@ -3445,7 +3445,7 @@
 	struct weston_output *output = output_resource->data;
 
 	surface->configure = screensaver_configure;
-	surface->private = shell;
+	surface->configure_private = shell;
 	surface->output = output;
 }
 
@@ -3524,7 +3524,7 @@
 get_input_panel_surface(struct weston_surface *surface)
 {
 	if (surface->configure == input_panel_configure) {
-		return surface->private;
+		return surface->configure_private;
 	} else {
 		return NULL;
 	}
@@ -3556,7 +3556,7 @@
 		return NULL;
 
 	surface->configure = input_panel_configure;
-	surface->private = input_panel_surface;
+	surface->configure_private = input_panel_surface;
 
 	input_panel_surface->shell = shell;
 
diff --git a/tests/weston-test.c b/tests/weston-test.c
index 4dc2e5c..55c5da4 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -76,7 +76,7 @@
 static void
 test_surface_configure(struct weston_surface *surface, int32_t sx, int32_t sy, int32_t width, int32_t height)
 {
-	struct weston_test_surface *test_surface = surface->private;
+	struct weston_test_surface *test_surface = surface->configure_private;
 	struct weston_test *test = test_surface->test;
 
 	if (wl_list_empty(&surface->layer_link))
@@ -99,9 +99,9 @@
 	struct weston_test_surface *test_surface;
 
 	surface->configure = test_surface_configure;
-	if (surface->private == NULL)
-		surface->private = malloc(sizeof *test_surface);
-	test_surface = surface->private;
+	if (surface->configure_private == NULL)
+		surface->configure_private = malloc(sizeof *test_surface);
+	test_surface = surface->configure_private;
 	if (test_surface == NULL) {
 		wl_resource_post_no_memory(resource);
 		return;
