diff --git a/ChangeLog b/ChangeLog
index e75140085..f8b96f0e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2008-01-23  Emmanuele Bassi  <ebassi@openedhand.com>
+
+	* Makefile.am: Use variables, instead of substitutions.
+
+	* clutter/clutter-private.h:
+	* clutter/clutter-main.h: Make clutter_do_event() public again,
+	as we need it in clutter-gtk.
+
+	* configure.ac:
+	* clutter/x11/Makefile.am:
+	* clutter/x11/clutter-x11.pc.in: Add a clutter-x11 pkg-config
+	file for clutter-gtk, as it depends on the X11 backend API, as
+	implemented by the GLX and EGLX backends.
+
+	* clutter/x11/clutter-event-x11.c (event_translate): Do not
+	propagate DestroyNotify events if the stage doesn't own the
+	window.
+
+	* tests/test-scale.c (main): Set values different from the default.
+
 2008-01-21  Emmanuele Bassi  <ebassi@openedhand.com>
 
 	* clutter/clutter-behaviour-scale.c:
diff --git a/Makefile.am b/Makefile.am
index 20e51c74c..7eeb26893 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,8 @@
 SUBDIRS = clutter tests doc
 
-pcfiles = clutter-@CLUTTER_FLAVOUR@-@CLUTTER_MAJORMINOR@.pc
+pcfiles = clutter-$(CLUTTER_FLAVOUR)-$(CLUTTER_API_VERSION).pc
 
-%-@CLUTTER_FLAVOUR@-@CLUTTER_MAJORMINOR@.pc: %.pc
+clutter-$(CLUTTER_FLAVOUR)-$(CLUTTER_API_VERSION).pc: clutter.pc
 	cp $< $@
 
 pkgconfig_DATA = $(pcfiles)
@@ -12,7 +12,8 @@ DEFAULT_FLAVOUR = @CLUTTER_FLAVOUR@
 install-data-hook:
 	(cd $(DESTDIR)$(pkgconfigdir) && \
 	 test -f clutter-$(DEFAULT_FLAVOUR)-@CLUTTER_MAJORMINOR@.pc && \
-	 rm -f clutter-@CLUTTER_MAJORMINOR@.pc && cp -f clutter-$(DEFAULT_FLAVOUR)-@CLUTTER_MAJORMINOR@.pc clutter-@CLUTTER_MAJORMINOR@.pc)
+	 rm -f clutter-@CLUTTER_MAJORMINOR@.pc && \
+	 cp -f clutter-$(DEFAULT_FLAVOUR)-@CLUTTER_MAJORMINOR@.pc clutter-@CLUTTER_MAJORMINOR@.pc)
 
 uninstall-local:
 	rm -f $(DESTDIR)$(pkgconfigdir)/clutter-@CLUTTER_MAJORMINOR@.pc
diff --git a/NEWS b/NEWS
index 410fcac7f..15f9aa0c9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,27 @@
+Clutter 0.5.4 (xx/01/2008)
+==========================
+
+ * List of changes between 0.5.2 and 0.5.4
+
+ * List of bugs fixed
+
+   o #564 - Add more precise clutter_qdivx() [Gwenole Beauchesne]
+   o #614 - ClutterActor API inconsistencies
+   o #640 - ClutterTexture unrealized with no GL context
+   o #654 - Under heavy load clutter sometimes drops the last frame of
+     a timeline [Johan Bilien]
+   o #672 - Event handling in osx backend is broken [Tommi Komulainen]
+   o #684 - Improve test-scale by also using anchor point [Jaap A. Haitsma]
+   o #695 - clutter-shader: Invalid format string for
+     gssize [Tommi Komulainen]
+   o #696 - cogl_get_proc_address requires GLX [Tommi Komulainen]
+   o #709 - clutter_effect_scale inconsistent with clutter_actor_set_scale
+   o #714 - clutter_event_copy for enter/leave event generates
+     extra unref [Neil Roberts]
+   o #715 - Type errors in test-shader
+   o #720 - BehaviourScale not working in python after recent
+     API change [Josh Stewart]
+
 Clutter 0.5.2 (14/01/2008)
 ==========================
 
diff --git a/clutter/clutter-main.h b/clutter/clutter-main.h
index dda4b948b..d63a911c9 100644
--- a/clutter/clutter-main.h
+++ b/clutter/clutter-main.h
@@ -74,6 +74,8 @@ gint             clutter_main_level                 (void);
 
 void             clutter_redraw                     (void);
 
+void             clutter_do_event                   (ClutterEvent *event);
+
 /* Debug utility functions */
 gboolean         clutter_get_debug_enabled          (void);
 gboolean         clutter_get_show_fps               (void);
diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h
index a3f7a4454..453f7b1fe 100644
--- a/clutter/clutter-private.h
+++ b/clutter/clutter-private.h
@@ -150,9 +150,6 @@ gboolean      _clutter_boolean_handled_accumulator (GSignalInvocationHint *ihint
                                                     const GValue          *handler_return,
                                                     gpointer               dummy);
 
-/* Does this need to be private ? */
-void clutter_do_event (ClutterEvent *event);
-
 G_END_DECLS
 
 #endif /* _HAVE_CLUTTER_PRIVATE_H */
diff --git a/clutter/x11/Makefile.am b/clutter/x11/Makefile.am
index 97c538a15..4dfd55b83 100644
--- a/clutter/x11/Makefile.am
+++ b/clutter/x11/Makefile.am
@@ -1,6 +1,12 @@
 libclutterincludedir = $(includedir)/clutter-@CLUTTER_API_VERSION@/clutter
 libclutterinclude_HEADERS = clutter-x11.h
 
+clutter-x11-$(CLUTTER_API_VERSION).pc: clutter-x11.pc
+	@cp -f $< $(@F)
+
+pkgconfig_DATA = clutter-x11-@CLUTTER_API_VERSION@.pc
+pkgconfigdir   = $(libdir)/pkgconfig
+
 INCLUDES = \
 	-DG_LOG_DOMAIN=\"ClutterX11\" \
 	-I$(top_srcdir) \
@@ -21,3 +27,5 @@ libclutter_x11_la_SOURCES = \
 	clutter-stage-x11.h \
 	clutter-stage-x11.c \
 	clutter-x11.h
+
+EXTRA_DIST = clutter-x11.pc.in
diff --git a/clutter/x11/clutter-event-x11.c b/clutter/x11/clutter-event-x11.c
index b7c8f8ed6..7ca37f903 100644
--- a/clutter/x11/clutter-event-x11.c
+++ b/clutter/x11/clutter-event-x11.c
@@ -587,7 +587,11 @@ event_translate (ClutterBackend *backend,
     case DestroyNotify:
       CLUTTER_NOTE (EVENT, "destroy notify:\txid: %ld",
                     xevent->xdestroywindow.window);
-      event->type = event->any.type = CLUTTER_DESTROY_NOTIFY;
+      if (xevent->xdestroywindow.window == stage_xwindow &&
+          !stage_x11->is_foreign_xwin)
+        event->type = event->any.type = CLUTTER_DESTROY_NOTIFY;
+      else
+        res = FALSE;
       break;
 
     case ClientMessage:
diff --git a/clutter/x11/clutter-x11.pc.in b/clutter/x11/clutter-x11.pc.in
new file mode 100644
index 000000000..7a2124c31
--- /dev/null
+++ b/clutter/x11/clutter-x11.pc.in
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+backend=@clutterbackend@
+apiversion=@CLUTTER_API_VERSION@
+requires=@CLUTTER_REQUIRES@
+
+Name: Clutter
+Description: Clutter Core Library (${backend} backend)
+Version: @VERSION@
+Libs: -L${libdir} -lclutter-${backend}-${apiversion}
+Cflags: -I${includedir}/clutter-${apiversion}
+Requires: ${requires}
\ No newline at end of file
diff --git a/configure.ac b/configure.ac
index ccc6b71a6..59a1c1d93 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ AC_INIT([clutter],
 AC_CONFIG_SRCDIR([clutter/clutter.h])
 AM_CONFIG_HEADER([config.h])
 
-AM_INIT_AUTOMAKE([1.7])
+AM_INIT_AUTOMAKE([1.9])
 
 CLUTTER_MAJOR_VERSION=clutter_major_version
 CLUTTER_MINOR_VERSION=clutter_minor_version
@@ -396,6 +396,7 @@ AC_CONFIG_FILES([
         clutter/Makefile
         clutter/clutter-version.h
         clutter/x11/Makefile
+        clutter/x11/clutter-x11.pc
         clutter/glx/Makefile
         clutter/eglx/Makefile
         clutter/eglnative/Makefile
diff --git a/doc/reference/clutter-sections.txt b/doc/reference/clutter-sections.txt
index 381e55833..78de153fd 100644
--- a/doc/reference/clutter-sections.txt
+++ b/doc/reference/clutter-sections.txt
@@ -960,6 +960,9 @@ clutter_grab_pointer
 clutter_ungrab_keyboard
 clutter_ungrab_pointer
 
+<SUBSECTION>
+clutter_do_event
+
 <SUBSECTION Standard>
 CLUTTER_INIT_ERROR
 <SUBSECTION Private>
diff --git a/tests/test-scale.c b/tests/test-scale.c
index 1979ef6a3..d2863a868 100644
--- a/tests/test-scale.c
+++ b/tests/test-scale.c
@@ -66,7 +66,7 @@ main (int argc, char *argv[])
 
   behave = clutter_behaviour_scale_new (alpha,
 					0.0, 0.0, /* scale start */
-					1.0, 1.0, /* scale end */
+					1.5, 1.5, /* scale end */
 					gravities[gindex]);
 
   clutter_behaviour_apply (behave, rect);