Commit Graph

225 Commits

Author SHA1 Message Date
Matthew Allum
eb42f82f23 2007-05-10 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-backend.c:
        * clutter/clutter-backend.h:
        * clutter/clutter-event.c:
        * clutter/clutter-main.c:
        * clutter/clutter-private.h:
        * clutter/glx/clutter-backend-glx.c:
        * clutter/glx/clutter-backend-glx.h:
        * clutter/glx/clutter-event-glx.c:
        Rejig backend event code as to simplify a little.
        NOTE: This breaks non glx backends.

        * tests/Makefile.am:
        * tests/test-events.c:
        Add a very simple event test.

        * tests/test-textures.c: (main):
        Add some more sizes to the test.
2007-05-09 23:31:08 +00:00
Matthew Allum
79469940bc 2007-04-27 Matthew Allum <mallum@openedhand.com>
* clutter/Makefile.am:
        * clutter/clutter-actor.c:
        * clutter/clutter-clone-texture.c:
        * clutter/clutter-rectangle.c:
        * clutter/clutter-stage.c:
        * clutter/clutter-texture.c:
        * clutter/cogl/cogl.h:
        * clutter/cogl/gl/Makefile.am:
        * clutter/cogl/gl/cogl-defines.h:
        * clutter/cogl/gl/cogl.c:
        * clutter/cogl/gles/Makefile.am:
        * clutter/cogl/gles/cogl-defines.h:
        * clutter/cogl/gles/cogl.c:
        * clutter/glx/Makefile.am:
        * clutter/glx/clutter-stage-glx.c:
        * clutter/pango/Makefile.am:
        * clutter/pango/pangoclutter-render.c:
        * configure.ac:
        Add initial 'cogl' implementation. 'cogl' is a simple abstration
        layer over GL and GL/ES used by clutter internally. It should
        eventually allow clutter applications to be run on both GL and GL/ES
        with just a recompile as well as provide more debugging and potentially
        profiling information for GL and GL/ES usage.

        This commit contains the initial GL implementation.
2007-04-27 21:13:06 +00:00
Emmanuele Bassi
a7a511ce79 2007-04-25 Emmanuele Bassi <ebassi@openedhand.com>
Merge from clutter.git/master

	* clutter/glx/clutter-event-glx.c:
	* clutter/glx/clutter-stage-glx.c: Implement the _NET_WM_PING
	protocol handling on the main stage window.

	* clutter/clutter-stage.h:
	* clutter/clutter-stage.c:
	* clutter/clutter-main.c: Handle CLUTTER_DELETE events internally,
	by calling clutter_main_quit(), and remove the ::delete-event
	signal from ClutterStage; clean up the signal emission sequence
	for the events: emit the ::event signal before emitting any signal
	and the ::event-after signal after the signal has been emitted; move
	the signal emission calls inside ClutterStage so we can call
	g_signal_emit() instead of g_signal_emit_by_name(), thus sparing us
	a lookup for each event.

	* examples/test.c: Remove ::delete-event signal handling.
2007-04-25 14:22:24 +00:00
Emmanuele Bassi
a8749a5b64 Change clutter_glx_get_default_screen() to return a Screen pointer
Now that we have clutter_backend_get_screen_number(), we can directly
return the Screen pointer inside the GLX backend API.
2007-04-19 15:28:04 +00:00
Emmanuele Bassi
b2d01d86c2 Add support for WM_PROTOCOLS to the ClutterStage window
Supporting WM_PROTOCOLS allows handling the WM_DELETE_WINDOW ClientMessage,
which is then relayed to the ClutterStage actor in form of the "delete-event"
signal. Returning TRUE will block the propagation and won't close the
stage window.
2007-04-19 15:26:54 +00:00
Emmanuele Bassi
f1a1399927 Add clutter_backend_get_n_screens()
Add clutter_backend_get_n_screens(), which returns the number of screens
manager by the ClutterBackend, and change clutter_backend_get_screen_number()
to return the screen number of the currently used screen; this is semantically
equivalent to clutter_glx_get_default_screen(), but leaves the door open for
a "screen" abstraction in Clutter, handled by the backend. Update the GLX
and EGL backends to retrieve and set the screen_num and n_screens members of
ClutterBackend using Xlib calls.
2007-04-19 15:26:28 +00:00
Emmanuele Bassi
cd39202f23 Add API for getting properties of the ClutterBackend
Add functions to retrieve some of the properties of the screen used by
the backend, like its dimensions (also physical, in millimeters); the
number of screens. Also add setters and getters for the double click
time (in milliseconds) and distance.
2007-04-19 15:25:34 +00:00
Emmanuele Bassi
8b7504dea2 Merge from stable: add XEMBED support
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
2007-04-19 15:24:57 +00:00
Emmanuele Bassi
1722c6fec4 Add missing template files. 2007-04-19 15:22:49 +00:00
Emmanuele Bassi
246a84d528 Merge from stable: add XEMBED support
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
2007-04-16 16:50:40 +00:00
Matthew Allum
0085b75610 2007-04-07 Matthew Allum <mallum@openedhand.com>
* clutter/glx/clutter-backend-glx.c:
        Fix version check.
2007-04-07 21:01:49 +00:00
Matthew Allum
120a489067 2007-03-27 Matthew Allum <mallum@openedhand.com>
* clutter/cogl/Makefile.am:
        * clutter/cogl/cogl.h:
        * clutter/cogl/gles/Makefile.am:
        * clutter/cogl/gles/cogl.c:
        Begin poplulating cogl GLES code.

        * configure.ac:
        * clutter/egl/clutter-event-egl.c:
        * clutter/egl/clutter-stage-egl.c:
        * clutter/egl/clutter-stage-egl.h:
        * clutter/egl/clutter-backend-egl.c:
        * clutter/egl/clutter-backend-egl.h:
        * clutter/egl/clutter-egl.h:
        Add initial EGL/X backend work mostly ported from backend branch.
        Builds but untested as yet.

        * clutter/glx/clutter-stage-glx.c:
        Only include XFixes Header if we have have it.

        * clutter/clutter-behaviour.c: (clutter_behaviour_apply):
        * clutter/clutter-behaviour.h:
        Add clutter_behaviour_is_applied()
2007-03-27 21:09:11 +00:00
Emmanuele Bassi
6663774c36 Ignore the clutter/cogl directory when building documentation, as it
is private API; remove the now private ClutterBackend API; add the
ClutterPerspective API to the documentation.
2007-03-27 09:39:00 +00:00
Emmanuele Bassi
219e97bda3 Reimplement the clutter_glx_set_stage_foreign() function, used to
set an existing X window as the window for the main stage.
2007-03-27 09:38:50 +00:00
Emmanuele Bassi
898f84c9c7 Do not check if the ClutterStageGlx parent paint vfunc is set: we
set it ourselves.
2007-03-27 09:38:27 +00:00
Matthew Allum
464f24fdc0 2007-03-27 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-feature.c:
        Rejig ifdef's a little. Make drm vblanking Linux only.

        * clutter/clutter-stage.c:
        * clutter/clutter-stage.h:
        Add a perspective boxed type.

        * clutter/glx/clutter-stage-glx.c:
        Add some FIXMEs

        * clutter/Makefile.am:
        * clutter/cogl/Makefile.am:
        * clutter/cogl/cogl.h:
        * clutter/cogl/gl/Makefile.am:
        * clutter/cogl/gl/cogl.c:
        * configure.ac:
        Very initial work on 'cogl' GL/GLES abstraction/utility code.
2007-03-26 23:18:39 +00:00
Emmanuele Bassi
fa93634d14 Move the get_actor_at_pos() inside ClutterStage, as it is pure
GL and not GLX. Removed the get_actor_at_pos() and flush() vfuncs
from ClutterStageClass: clutter_stage_flush() becomes the private
_clutter_stage_sync_viewport() function, which should only be used
internally.
2007-03-25 11:47:30 +00:00
Emmanuele Bassi
65d1a65b49 2007-03-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-backend.c: Clear the event queue when
	disposing the backend object; remove the initialisation
	of the backend structure members...

	* clutter/glx/clutter-backend-glx.c: ... and keep it here
	in the backends where it belongs.
2007-03-23 23:57:24 +00:00
Emmanuele Bassi
d0f1186e1d 2007-03-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-private.h:
	* clutter/clutter-backend.h: Move the backend functions
	into the private header.

	* clutter/glx/clutter-stage-glx.c:
	* clutter/glx/clutter-event-glx.c:
	* clutter/clutter-main.c:
	* clutter/clutter-stage.c: Update the calls to the private
	backend functions.

	* clutter/clutter-backend.[ch]: Add an ::init_features
	vfunc to ClutterBackend.
2007-03-23 17:55:13 +00:00
Emmanuele Bassi
064d45266a 2007-03-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/glx/clutter-stage-glx.c:
	(clutter_stage_glx_allocate_coords): Make sure the top-left
	corner of the box is our origin.
2007-03-23 16:37:56 +00:00
Matthew Allum
810661f612 2007-03-23 Matthew Allum <mallum@openedhand.com>
* clutter/glx/clutter-stage-glx.c:
        (clutter_stage_glx_allocate_coords):
        Make new stage return correct width & height.
2007-03-23 16:35:18 +00:00
Emmanuele Bassi
83dafa5f9e 2007-03-23 Emmanuele Bassi <ebassi@openedhand.com>
Assorted build fixes to pass distcheck.

	* clutter/glx/Makefile.am: Install the clutter-glx.h header.

	* clutter/Makefile.am: Actually apply linker flags.

	* configure.ac: Use a more readable CLUTTER_API_VERSION instead
	of CLUTTER_MAJORMINOR; require gobject-2.0 with glib-2.0 >= 2.10,
	as we are using GObject and the slice allocator from glib 2.10.

	* clutter.pc.in: Add the apiversion variable.
2007-03-23 15:20:35 +00:00
Emmanuele Bassi
26cd879acc always check changes in the build with a fresh checkout, you dolt 2007-03-23 11:37:39 +00:00
Emmanuele Bassi
93d7454b37 2007-03-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-event.c: Pop and peek the event queue
	from the tail - it's a queue, not a stack.
2007-03-23 09:44:21 +00:00
Emmanuele Bassi
4bd3fa583e 2007-03-22 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-private.h: Remove inclusion of backend-specific
	headers; update the main context object; add the declarations for
	the event queue functions.

	* clutter/clutter-backend.[ch]: Add the abstract ClutterBackend
	object, which holds backend-specific settings, the main stage,
	and the event queue. Every backend must implement a subclass of
	ClutterBackend and ClutterStage.

	* clutter/clutter-feature.c: Protect the GLX specific calls
	behing #ifdef HAVE_CLUTTER_GLX.

	* clutter/clutter-actor.c:
	* clutter/clutter-group.c:
	* clutter/clutter-clone-texture.c: Include GL/gl.h

	* clutter/clutter-event.[ch]: Update public API and implement the
	event queue private API; hold a reference on the event objects;
	move out the keysym-to-unicode table; add the new event types.

	* clutter/clutter-color.h: Include clutter-fixed.h

	* clutter/clutter-main.c: Update API; get the main stage
	from the backend object; process the event received from the
	queue; lock/unlock the main mutex if we have one; move the
	initialisation process sooner in the init sequence, in order to
	have the backend object when we check for options; call the
	backed vfuncs in the pre/post parse hooks.

	* clutter/clutter-stage.c: Make ClutterStage and abstract class,
	implemented by the backends.

	* clutter/clutter/glx/clutter-glx.h:
	* clutter/clutter/glx/clutter-backend-glx.[ch]:
	* clutter/clutter/glx/clutter-event-glx.c:
	* clutter/clutter/glx/clutter-stage-glx.[ch]:
	* clutter/clutter/glx/Makefile.am: Add the GLX backend.

	* clutter/clutter/egl/clutter-backend-egl.[ch]:
	* clutter/clutter/egl/clutter-event-egl.c:
	* clutter/clutter/egl/clutter-stage-egl.[ch]:
	* clutter/clutter/egl/Makefile.am: Add the stub for a EGL backend.

	* examples/*.c: Update for the new API.
2007-03-22 18:21:59 +00:00