Commit Graph

82 Commits

Author SHA1 Message Date
Emmanuele Bassi
cf48935cf5 [build] Pass the -s switch to cmp
The call to "cmp" to compare a built file with its current version
should use the -s (silent) command line switch. This avoids a ugly
message on the console when building Clutter the first time.
2009-02-19 14:57:43 +00:00
Tomas Frydrych
c0672b6683 [x11] Only update cached last event time if we have a real timestamp.
Ignore the timestamp if it is set to CurrentTime (e.g., when the last event
did not carry a timestamp).
2009-02-18 16:56:39 +00:00
Emmanuele Bassi
2fe0228f92 [x11] Add backend-specific get_current_event_time()
The clutter_get_current_event_time() function will return the event
timestamp coming from a Clutter event. Clutter might synthesize or
throttle events, so the function cannot be used when dealing with
backend-specific use cases.

The X11 backend is the only backend supported by Clutter that makes
use of timestamps, so it's altogether fitting that it should come
with a specific function to deal with the timestamps of the X events.
2009-02-18 10:07:12 +00:00
Neil Roberts
5d6a11e1bf Emit CLUTTER_LEAVE events when the pointer leaves the stage
Bug 1178 - No enter / leave events on actors when pointer leaves the
           stage window

The patch is mostly thanks to Johan Bilien with small modifications
based on suggestions by Owen Taylor.

The X11 backend now listens for enter and leave notifications. Leave
notifications get translated directly to a CLUTTER_LEAVE
event. Clutter can detect these special events because the source
actor is NULL in which case it sets the source actor to the last known
actor and then sets the last known actor to NULL.

Enter notifications just get translated to CLUTTER_MOTION events which
will cause Clutter to generate an enter event through the usual code
path.
2009-02-16 12:46:36 +00:00
Christian Persch
839d1e00b1 Bug 1429 - Redundant declaration in clutter-x11.h
clutter-x11.h declares clutter_x11_set_display twice, which means code using
clutter doesn't compile cleanly with -Wredundant-decls.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2009-02-14 12:55:20 +00:00
Tomas Frydrych
e8ef5153b1 Fix clutter_x11_texture_pixmap_get/set_property() following change of PROP_WINDOW type.
PROP_WINDOW is now gulong, so we need to use appropriate GValue accessors.
2009-02-02 07:37:08 +00:00
Tomas Frydrych
c1de33fafe Fixed handling of enter and leave events in clutter_x11_handle_event()
When processing a motion event, we need to spin the event loop two extra
  times to ensure that any enter/leave events that might have been synthesized
  are pumped through (otherwise they end up being pushed down the queue and
  never processed).
2009-02-02 07:36:36 +00:00
Owen W. Taylor
b716d32000 Fix properties that have X11 types to be 'long'
While X11 Pixmap and Window types only have 32-bits of data, they
are actually 'unsigned long'. Change the "window" and "pixmap"
property of ClutterX11TexturePixmaps to be ulong.

This fixes 64-bit bugs where ClutterGLXTexturePixmap passed a
reference to Pixmap to g_object_get("pixmap", &pixmap, ...);

http://bugzilla.openedhand.com/show_bug.cgi?id=1405

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2009-01-16 23:44:32 +00:00
Neil Roberts
d454bfcc87 [ClutterStageX11] Remove the handling_configure flag
Since Clutter changed to using a layout scheme the handling_configure
flag no longer works because the allocate method is not invoked
immediately during the call to set_size from the ConfigureNotify
handler. However it is also no longer neccessary because the resizes
are effectively batched up until a relayout is run so it won't cause
an infinite loop of resize and notify events anyway.
2009-01-14 15:10:50 +00:00
Emmanuele Bassi
4f6cc0b25f [x11] Proper fix for the ClutterStage resize race
Continuation of the fix in commit 00a3c69868.

Instead of using a separate flag for the resize process, just
delay the setting of the CLUTTER_ACTOR_SYNC_MATRICES flag on the
stage to the point when we receive a ConfigureNotify event from
X11.

This commit will break the stage embedding into other toolkits.
2009-01-12 11:15:41 +00:00
Emmanuele Bassi
00a3c69868 [x11] Fix a race condition when resizing a stage
There is a race condition when we resize a stage before showing
it on X11.

The race goes like this:

  - clutter_init() creates the default stage and realize it, which
    will cause a 640x480 Window to be created
  - call set_size(800, 600) on the stage will cause the Window to be
    resized to 800x600
  - call show() on the stage for the first time will cause COGL
    to set up an 800 by 600 GL viewport
  - the Window will be mapped, which will cause X to notify the
    window manager that the Window should be resized to 800x600
  - the window manager will approve the resize
  - X resizes the drawable to 800x600

To fix the race, we need to defer COGL from setting up the viewport
until we receive a ConfigureNotify event and the X server has resized
the Drawable.

In order to defer the call to cogl_setup_viewport() we add a new
private flag, CLUTTER_STAGE_IN_RESIZE; the flag is checked whenever
we need to change the viewport size along with the SYNC_MATRICES
private flag. Thus, cogl_setup_viewport() will be called only if
SYNC_MATRICES is set and IN_RESIZE is not set.
2009-01-09 12:06:46 +00:00
Takao Fujiwara
8e6423a1b6 Bug 1397 - Allow localizing the command line help
Clutter has a set of command line options that are added to every
application by means of clutter_init() or by obtaining the Clutter
GOptionGroup and using g_option_context_parse(). Thus, every Clutter
application will automatically have an --help command line switch
showing the list of options and their description.

At the moment, Clutter does not enable localization of the help,
thus making it less than useful on non-English locales.

This patch enables the machinery to create a localization file and
load it when initializing Clutter, by means of the GLib macros and
locale.h API we already use.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2009-01-06 12:15:02 +00:00
Owen Taylor
6a980793c6 Return something reasonable from clutter_x11_handle_event()
Instead of returning CLUTTER_X11_FILTER_CONTINUE always from
clutter_x11_handle_event() return CLUTTER_X11_FILTER_REMOVE if
the event was on a stage and translated to a ClutterEvent.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2008-12-22 13:11:59 +00:00
Matthew Allum
c7c5cf9bd4 2008-11-07 Matthew Allum <mallum@linux.intel.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        * clutter/clutter-clone-texture.c:
        * clutter/clutter-private.h:
        * clutter/clutter-texture.c:
        * clutter/x11/clutter-x11-texture-pixmap.c:

        Attempt to lower overhead of updating TFP's (particularly mipmaped).
        Compresses mipmap updates only for visible TFPs.
        Avoiding updates for non visible TFP's whilst keeping visible
        clones working ok.
2008-11-07 16:31:56 +00:00
Emmanuele Bassi
91f2653b71 2008-10-31 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1200 - Crash with invalid DISPLAY

	* clutter/clutter-main.c: Use the ClutterBackend wrapper API
	instead of directly checking the class structure.

	* clutter/glx/clutter-backend-glx.c: Return the correct value
	in case of failure.

	* clutter/x11/clutter-backend-x11.c: Bail out if XOpenDisplay()
	failed.
2008-10-31 12:48:26 +00:00
Emmanuele Bassi
a32eca26b6 2008-10-30 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1212 - Allow only a single include file for Clutter

	* clutter/*.h: Only allow including clutter.h in third
	party code.

	* clutter/cogl/cogl-color.h:
	* clutter/cogl/cogl-fixed.h:
	* clutter/cogl/cogl.h.in: Only allow including cogl.h in
	third party code.

	* clutter/cogl/common/Makefile.am:
	* clutter/cogl/gl/Makefile.am:
	* clutter/cogl/gles/Makefile.am:
	* clutter/eglnative/Makefile.am:
	* clutter/eglx/Makefile.am:
	* clutter/fruity/Makefile.am:
	* clutter/glx/Makefile.am:
	* clutter/glx/clutter-glx.h:
	* clutter/osx/Makefile.am:
	* clutter/pango/Makefile.am:
	* clutter/sdl/Makefile.am:
	* clutter/win32/Makefile.am:
	* clutter/x11/Makefile.am: Fix build environment.

	* clutter/x11/clutter-x11-texture-pixmap.h:
	* clutter/x11/clutter-x11.h: Fix inclusion rules.

	* tests/test-pixmap.c: Fix inclusion of GdkPixbuf header.

	* README: Update release notes.
2008-10-30 17:04:34 +00:00
Tomas Frydrych
6b51ac4b77 2008-09-23 Tomas Frydrych <tf@linux.intel.com>
* clutter/clutter-main.c:
	    * clutter/clutter-main.h:
	    * clutter/clutter-private.h:
	    * clutter/x11/clutter-backend-x11.c:
	    (clutter_get_option_group_without_init):
	    Function to obtain clutter option group without opening display
	    (for use with foreign display and gtk_clutter_init). Bug 1033.

	    Stripped trailing whitespace.
2008-09-23 07:03:35 +00:00
Emmanuele Bassi
57bc2313d0 2008-09-19 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/x11/clutter-backend-x11.c: Properly document the
	usage of clutter_x11_set_display().

	* clutter/x11/clutter-x11.h: clutter_x11_set_display() is
	public API and should be declared in the header we install.
2008-09-19 10:28:51 +00:00
Tomas Frydrych
8be7e29a6b 2008-09-16 Tomas Frydrych <tf@linux.intel.com>
* clutter/glx/clutter-glx-texture-pixmap.c:
	    * clutter/x11/clutter-x11-texture-pixmap.c:
	    TFP resyncing on MapNotify/ConfigureNotify (bug  1020; patch by
	    Andy Wingo <wingo@pobox.com>).
2008-09-16 11:50:38 +00:00
Matthew Allum
d5369aa9bf 2008-07-13 Matthew Allum <mallum@openedhand.com>
* clutter/x11/clutter-x11-texture-pixmap.c:
        Call XSync in unredirect X error trap (Thanks to Andy Wingo)
2008-07-13 22:54:19 +00:00
Matthew Allum
0a1ad0342e 2008-07-07 Matthew Allum <mallum@openedhand.com>
Bug 1016 - Changing window-redirect-automatic property after
                   creating ClutterX11TexturePixmap doesn't work.

        * clutter/x11/clutter-x11-texture-pixmap.c:
        (clutter_x11_texture_pixmap_set_window):
        Sync up redirection prop correctly (Jason Tackaberry)
2008-07-07 22:28:13 +00:00
Emmanuele Bassi
00e327fbec 2008-07-03 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/x11/Makefile.am: Fix distchecking by adding the
	generated enum types files to DISTCLEANFILES.
2008-07-03 17:07:51 +00:00
Matthew Allum
be160d971a 2008-07-01 Matthew Allum <mallum@openedhand.com>
* clutter/glx/clutter-stage-glx.c:
        * clutter/x11/clutter-backend-x11.c:
        * clutter/x11/clutter-backend-x11.h:
        * clutter/x11/clutter-event-x11.c:
        * clutter/x11/clutter-x11.h:
        * tests/test-devices.c:
        Disable use of XInput and add an explicit clutter_x11_enable_xinput
        to enable it.
        Also fix up the x11 pre-init calls to not need g_type_init.
2008-07-01 13:41:23 +00:00
Matthew Allum
5beb8b7779 2008-06-30 Matthew Allum <mallum@openedhand.com>
Bug 1008 - tfp still a bit borked

        * clutter/x11/clutter-x11-texture-pixmap.c:
        Fix from Andy Wingo for sync_window borkage
2008-06-30 22:00:49 +00:00
Matthew Allum
7d59aa3da0 2008-06-30 Matthew Allum <mallum@openedhand.com>
Bug 1007 - Fix TFP fallback mechanism

        * clutter/glx/clutter-glx-texture-pixmap.c:
        * clutter/x11/clutter-x11-texture-pixmap.c:
        Add some extra safety to glx pixmap creations and tidy up some notes.
        Patch from Gwenole Beauchesne.
2008-06-30 16:06:36 +00:00
Neil Roberts
06d0696874 * clutter/x11/clutter-event-x11.c:
* clutter/win32/clutter-event-win32.c: Use the HAVE_CONFIG_H guard
	around #include "config.h"
2008-06-30 16:01:56 +00:00
Emmanuele Bassi
ad221bfe4e 2008-06-30 Emmanuele Bassi <ebassi@openedhand.com>
Bug 1000 - clutter-x11 should define gtypes for its enumerations

	* clutter/x11/Makefile.am:
	* clutter/x11/clutter-event-x11.c:
	* clutter/x11/clutter-x11-enum-types.c.in:
	* clutter/x11/clutter-x11-enum-types.h.in:
	* clutter/x11/clutter-x11.h: Add the GTypes for the X11-specific
	enumerations, so that they can be used by the bindings. (Andy
	Wingo)
2008-06-30 15:03:42 +00:00
Matthew Allum
ac02680447 2008-06-30 Matthew Allum <mallum@openedhand.com>
Bug 997 - automatic updates not working for named TFP pixmaps,
                  at least in x11

        * clutter/glx/clutter-glx-texture-pixmap.c:
        * clutter/glx/clutter-glx-texture-pixmap.h:
        * clutter/x11/clutter-backend-x11.c:
        * clutter/x11/clutter-x11-texture-pixmap.c:
        * clutter/x11/clutter-x11-texture-pixmap.h:
        * clutter/x11/clutter-x11.h:
        * configure.ac:
        * tests/test-pixmap.c:
        Rework Andy Wingos patch a little adding more safety for now also
        handling redirect Windows (as well as pixmaps)
2008-06-30 14:36:49 +00:00
Øyvind Kolås
5525d0cad7 Disable XInput handling for keyboard events, re-enabling key press and
release events when pointer is outside window as well as re-enabling
keyrepeat.
* clutter/glx/clutter-stage-glx.c: (clutter_stage_glx_realize): select
for KeyPressMask and KeyReleaseMask even with XInput enabled.
* clutter/x11/clutter-backend-x11.c: (_clutter_x11_register_xinput): 
Disabled the XInput keyboard code paths (comments and #if 0's)
* clutter/x11/clutter-event-x11.c: (event_translate): always handle
keyboard events without regard to XInput.
2008-06-30 14:01:03 +00:00
Matthew Allum
9fa47035ac 2008-06-29 Matthew Allum <mallum@openedhand.com>
* clutter/x11/clutter-event-x11.c:
        ifdef convert_xdevicekey_to_xkey () with XINPUT check.
        (fix via Andy Wingo)
2008-06-29 22:19:20 +00:00
Emmanuele Bassi
17f46e57f3 2008-06-27 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-event.h:
	* clutter/clutter-main.c:
	* clutter/x11/clutter-backend-x11.c: Add further documentation,
	and increase the coverage to 94%.
2008-06-27 21:13:19 +00:00
Emmanuele Bassi
d88d2a6061 Fix the previous commit 2008-06-26 22:36:25 +00:00
Emmanuele Bassi
8008bfea25 2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-backend.h:
	* clutter/clutter-backend.c:
	(clutter_backend_get_display_size): Add a function for getting the
	display size out of the backend.

	* clutter/clutter-stage.c:
	(clutter_stage_allocate): When allocating on a backend with a
	static stage, we simply ignore the passed box and override it with
	the size of the display.

	* clutter/eglnative/clutter-backend-egl.c:
	(clutter_backend_egl_get_display_size),
	(clutter_backend_egl_class_init): Implement get_display_size() by
	returning the size of the EGL surface.

	* clutter/fruity/clutter-backend-fruity.c:
	(clutter_backend_egl_get_display_size),
	(clutter_backend_egl_class_init): Ditto as above.

	* clutter/x11/clutter-backend-x11.c:
	(clutter_backend_x11_get_display_size),
	(clutter_backend_x11_class_init): Implement get_display_size() by
	returning the DisplayWidth and DisplayHeight of the current
	screen.
2008-06-25 13:05:59 +00:00
Matthew Allum
6371f0c621 2008-06-25 Matthew Allum <mallum@openedhand.com>
* clutter/x11/clutter-backend-x11.c: (_clutter_x11_register_xinput)
        Add extra safety and fallback if no useable pointing devices are
        found.
2008-06-25 12:02:11 +00:00
Emmanuele Bassi
00efebe00a 2008-06-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/x11/clutter-event-x11.c (event_translate): Set the
	event type explicitly in the union members as well for the
	key events, like we do for all the other events.
2008-06-23 22:00:37 +00:00
Chris Lord
6ba7710224 * clutter/x11/clutter-event-x11.c: (convert_xdevicekey_to_xkey),
(translate_key_event), (event_translate):
        Change the xinput event handling to use translate_key (fixes modifier
        handling with xinput key events)
2008-06-23 12:45:20 +00:00
Matthew Allum
b241481586 2008-06-23 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        * clutter/clutter-event.c:
        * clutter/clutter-event.h:
        * clutter/clutter-main.c:
        * clutter/clutter-main.h:
        * clutter/clutter-private.h:
        * clutter/eglx/clutter-stage-egl.c:
        * clutter/fruity/clutter-backend-fruity.c:
        * clutter/fruity/clutter-backend-fruity.h:
        * clutter/fruity/clutter-fruity.c:
        * clutter/glx/clutter-stage-glx.c:
        * clutter/x11/clutter-backend-x11.c:
        * clutter/x11/clutter-backend-x11.h:
        * clutter/x11/clutter-event-x11.c:
        * clutter/x11/clutter-stage-x11.h:
        * clutter/x11/clutter-x11.h:
        * configure.ac:
        * tests/Makefile.am:
        * tests/test-devices.c:
        Merge of 'xinput' branch giving initial basic support of
        multiple input devices.
2008-06-23 09:55:42 +00:00
Emmanuele Bassi
4a788a6df7 2008-06-10 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-child-meta.c: Fix section name

	* clutter/clutter-container.c:
	(clutter_container_child_set_property),
	(clutter_container_child_get_property): Fix gtk-doc parameter
	name.

	* clutter/clutter-container.h: Fix documentation of the
	interface vfuncs.

	* clutter/clutter-event.h: Fix documentation.

	* clutter/clutter-feature.h: Fix documentation.

	* clutter/clutter-types.h: Add ClutterRequestMode.

	* clutter/x11/clutter-event-x11.c: Fix documentation.

	* tests/test-fullscreen.c: Verify that the stage size has been
	changed by clutter_stage_fullscreen().
2008-06-10 17:11:14 +00:00
Emmanuele Bassi
473d0e9fc3 2008-06-10 Emmanuele Bassi <ebassi@openedhand.com>
Bug #815 - Split up request, allocation, and paint box

	* clutter/clutter-actor.[ch]: Rework the size allocation,
	request and paint area. Now ::request_coords() is called
	::allocate(), and ::query_coords() has been split into
	::get_preferred_width() and ::get_preferred_height(). See
	the documentation and the layout test on how to implement
	a container and layout manager with the new API. (#915,
	based on a patch by Havoc Pennington, Lucas Rocha and Johan
	Bilien)

	* clutter/clutter-clone-texture.c: Port CloneTexture to
	the new size negotiation API; it just means forwarding
	the requests to the parent texture.

	* clutter/clutter-deprecated.h: Add deprecated and replaced
	API.

	* clutter/clutter-entry.c: Port Entry to the new size
	negotiation API.

	* clutter/clutter-group.c: Port Group to the new size
	negotiation API; the semantics of the Group actor do not
	change.

	* clutter/clutter-label.c: Port Label to the new size
	negotiation API, and vastly simplify the code.

	* clutter/clutter-main.[ch]: Add API for executing a
	relayout when needed.

	* clutter/clutter-private.h: Add new Stage private API.

	* clutter/clutter-rectangle.c: Update the get_abs_opacity()
	call to get_paint_opacity().

	* clutter/clutter-stage.c:
	(clutter_stage_get_preferred_width),
	(clutter_stage_get_preferred_height),
	(clutter_stage_allocate),
	(clutter_stage_class_init): Port Stage to the new size
	negotiation API.

	* clutter/clutter-texture.c: Port Texture to the new size
	negotiation API.

	* clutter/clutter-types.h: Add ClutterRequestMode enumeration.

	* clutter/x11/clutter-stage-x11.c: Port the X11 stage
	implementation to the new size negotiation API.

	* tests/Makefile.am: Add the layout manager test case.

	* tests/test-opacity.c: Update.

	* tests/test-project.c: Update.

	* tests/test-layout.c: Test case for a layout manager implemented
	using the new size negotiation API; the layout manager handles
	both transformed and untransformed children.
2008-06-10 17:07:52 +00:00
Emmanuele Bassi
8f013e1b22 Update svn:ignore property 2008-06-10 16:49:39 +00:00
Chris Lord
878b353568 * clutter/clutter-main.c: (pre_parse_hook):
Call setlocale on init
        
        * clutter/x11/clutter-event-x11.c: (translate_key_event):
        Fix typo and use the same buffer size as xev
2008-06-10 14:01:43 +00:00
Chris Lord
67fbfebd6d Bug #916 - ClutterKeyEvent:unicode_value is ignored
Bug #950 - AltGr not handled 

        * clutter/osx/clutter-event-osx.c: (clutter_event_osx_translate):
        * clutter/x11/clutter-event-x11.c: (translate_key_event):
        * tests/test-events.c: (fill_keybuf), (input_cb):
        Apply patch from Tommi Komulainen, fill the unicode_value attribute of
        the ClutterKeyEvent struct. Also use XKeycodeToKeysym, as suggested in
        bug #950, comment #2
2008-06-10 10:57:50 +00:00
Matthew Allum
437fa9239f 2008-06-03 Matthew Allum <mallum@openedhand.com>
* clutter/glx/clutter-glx-texture-pixmap.c:
        Dont always fallback to x11 (slow) updates for a single
        failed pixmap.
        Minor cleanups.
        * clutter/x11/clutter-x11-texture-pixmap.c:
        Move shm allocation to only area updates.
2008-06-03 16:25:17 +00:00
Matthew Allum
94b2d6f664 2008-05-26 Matthew Allum <mallum@openedhand.com>
* clutter/x11/clutter-stage-x11.c: (clutter_stage_x11_request_coords):
        Dont allow the window to be resize to 0 dimentions. (fixes #933)
2008-05-26 20:55:53 +00:00
Tomas Frydrych
460b05bd83 2008-05-19 Tomas Frydrych <tf@openedhand.com>
* clutter/x11/clutter-x11.h:
	    * clutter/glx/clutter-glx.h:
	    Include texture pixmap headers.
2008-05-19 12:27:26 +00:00
Tomas Frydrych
889222f7d5 2008-05-16 Tomas Frydrych <tf@openedhand.com>
* clutter/glx/Makefile.am:
	    * clutter/x11/Makefile.am:
	    Install glx and x11 specific includes into clutter/glx and
	    clutter/x11 so that header files that include glx/*.h or x11/*.h
	    when installed.
2008-05-16 10:50:29 +00:00
Emmanuele Bassi
f6dce7f9e5 2008-05-15 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/x11/clutter-backend-x11.c:
	* clutter/clutter-event.h:
	* clutter/clutter-feature.h:
	* clutter/clutter-fixed.c:
	* clutter/clutter-model.h: Fix documentation.

	* clutter/eglnative/clutter-backend-egl.[ch]:
	* clutter/eglnative/clutter-event-egl.c: Add the same solution
	used for the SDL backend in order to get the time of an event.
	This should fix the motion event throttling and the click count
	on button press.

	* tests/test-pixmap.c (create_pixmap), (main): Fix preprocessor
	directives.
2008-05-15 14:31:43 +00:00
Emmanuele Bassi
6022344a80 2008-05-13 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/x11/clutter-event-x11.c (event_translate): Remove the
	cheap Expose event compression, as it seems to play games when a
	composite manager is running. It's also not really needed, as
	the redraw queue will avoid redraws too close to each other
	anyway.

	* clutter/x11/clutter-stage-x11.c:
	(clutter_stage_x11_show), (clutter_stage_x11_hide): Do not chain
	up just to set the flags. This fixes a critical warning coming
	from ClutterActor::hide() default implementation.
2008-05-13 10:21:25 +00:00
Matthew Allum
f360f81f22 2008-05-12 Matthew Allum <mallum@openedhand.com>
* clutter/x11/clutter-x11-texture-pixmap.c:
        * configure.ac:
        * tests/Makefile.am:
        Remove the XComposite dep from Clutter itself, just use
        in test-pixmap (if available)
2008-05-12 16:22:16 +00:00
Emmanuele Bassi
101a3cac4e 2008-05-12 Emmanuele Bassi <ebassi@openedhand.com>
Rework the stage wrapper/implementation relation: remove
	duplicated code and all the bookkeeping from the backends into
	ClutterStage whenever possible, to reduce the amount of	work a
	backend must do (and possibly get wrong). Thanks to Tommi
	Komulainen.

	* clutter/clutter-main.c:
	(clutter_init_with_args), (clutter_init): Realize the default
	stage after creation. The default stage is special, because we
	use it in the initialization sequence. This removes the burden
	from the backends and reduces the things a backend can get
	wrong.

	* clutter/clutter-stage.c:
	(clutter_stage_show): Make sure to realize the implementation if
	it hasn't been realized yet.

	(clutter_stage_realize): Set the REALIZED flag and call
	clutter_stage_ensure_current() if the implementation was
	successfully realized.

	(clutter_stage_unrealized): Call clutter_stage_ensure_current()
	on unrealize.

	* clutter/glx/clutter-backend-glx.c:
	(clutter_backend_glx_create_stage): Do not realize the stage anymore
	when creating it, and let the normal realization sequence take
	place.

	(clutter_backend_glx_ensure_context): Trap for X11 errors.

	* clutter/glx/clutter-stage-glx.c:
	(clutter_stage_glx_realize): Chain up to the X11 implementation
	so that we can set up the window state (title, cursor visibility)
	when we actually have a X window. Also, do not call
	clutter_stage_ensure_current(), and rely on the wrapper to do
	it for us. This means we can drop setting the REALIZED flag on
	the wrapper.

	(clutter_stage_glx_unrealize): Do not call
	clutter_stage_ensure_current() ourselves, and rely on the wrapper
	to do it for us.

	* clutter/x11/clutter-stage-x11.c:
	(set_wm_title),	(set_cursor_visible): Move the WM title and
	cursor visibility code inside their own functions.

	(clutter_stage_x11_realize): Set the window title and whether the
	cursor is visible or not after realizing the stage.

	(clutter_stage_x11_set_cursor_visible),
	(clutter_stage_x11_set_title): Call set_wm_title() and
	set_cursor_visible().

	(clutter_stage_x11_finalize): Free the title string.

	* clutter/x11/clutter-stage-x11.h: Save more of the stage state,
	so that we can set it even when the stage hasn't been realized
	yet.

	* clutter/eglnative/clutter-backend-egl.c:
	(clutter_backend_egl_create_stage):
	* clutter/eglnative/clutter-stage-egl.c:
	(clutter_stage_egl_unrealize),
	(clutter_stage_egl_realize): Update the eglnative backend.

	* clutter/eglx/clutter-backend-egl.c:
	(clutter_backend_egl_ensure_context),
	(clutter_backend_egl_create_stage):
	* clutter/eglx/clutter-stage-egl.c:
	(clutter_stage_egl_unrealize),
	(clutter_stage_egl_realize): Update the eglx backend.

	* clutter/sdl/clutter-backend-sdl.c:
	(clutter_backend_sdl_create_stage):
	* clutter/sdl/clutter-stage-sdl.c:
	(clutter_stage_sdl_realize): Update the sdl backend.

	* clutter/fruity/clutter-backend-fruity.c:
	(clutter_backend_fruity_create_stage):
	* clutter/sdl/clutter-stage-fruity.c:
	(clutter_stage_fruity_realize): Update the fruity backend.

	* tests/test-multistage.c (on_button_press): Bail out if
	clutter_stage_new() returns NULL.

	* HACKING.backends: Update backend writing documentation.
2008-05-12 15:26:37 +00:00