Compare commits
	
		
			69 Commits
		
	
	
		
			wip/nielsd
			...
			wip/tablet
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | ec5d127cd2 | ||
|   | 1c1785ea6e | ||
|   | aef997f7a1 | ||
|   | 27477cbd30 | ||
|   | ed73efa63f | ||
|   | 98f26bf01a | ||
|   | edda88a7dd | ||
|   | 5815259897 | ||
|   | 1f7c7bdeaa | ||
|   | 05a5c86203 | ||
|   | c90d7a373b | ||
|   | 6225cc6e60 | ||
|   | 4c4b40d468 | ||
|   | 02ce6c5865 | ||
|   | 522989494f | ||
|   | ab851fc6e5 | ||
|   | 185eabd3e3 | ||
|   | 67f5b89659 | ||
|   | c7e0b87d7e | ||
|   | ec50fcd320 | ||
|   | 982802d66c | ||
|   | 0dcca308e7 | ||
|   | b68247d51e | ||
|   | 499851d404 | ||
|   | ef113d708b | ||
|   | e2b8b0bf67 | ||
|   | ec2ab05d8e | ||
|   | 69955471fc | ||
|   | e59a32afa5 | ||
|   | 1c0b063855 | ||
|   | 0cd46afa8f | ||
|   | c73cc5138b | ||
|   | f51972c2aa | ||
|   | f81e0f8922 | ||
|   | 1bf263f038 | ||
|   | 257b16680f | ||
|   | ed6eb8c94b | ||
|   | 95181bdbaa | ||
|   | 59be5bf3b1 | ||
|   | 7f8932b489 | ||
|   | f2feb6d53d | ||
|   | 47067e6d17 | ||
|   | 3386e5dc39 | ||
|   | 384400cd24 | ||
|   | be9997c717 | ||
|   | d3be071196 | ||
|   | de704e591b | ||
|   | a14f0edcae | ||
|   | bf5324a339 | ||
|   | 9855ff010a | ||
|   | 6bd06cf40b | ||
|   | 01fd218e17 | ||
|   | f8c0301ecc | ||
|   | 2354643d55 | ||
|   | c1d1477c64 | ||
|   | 04629d2bc2 | ||
|   | c789459a31 | ||
|   | 2f7602f297 | ||
|   | d5459427d5 | ||
|   | 379c6fb81a | ||
|   | fc5af32cdc | ||
|   | b71d7058db | ||
|   | 1d9d176c3f | ||
|   | cd911584eb | ||
|   | 2ff629a984 | ||
|   | b0a3c472ea | ||
|   | 7ecbca6291 | ||
|   | 780c66fa73 | ||
|   | ffa991d422 | 
							
								
								
									
										56
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,25 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| Makefile.in.in | ||||
| aclocal.m4 | ||||
| autom4te.cache | ||||
| build-aux | ||||
| compile | ||||
| config.guess | ||||
| config.h | ||||
| config.h.in | ||||
| config.log | ||||
| config.status | ||||
| config.sub | ||||
| configure | ||||
| depcomp | ||||
| install-sh | ||||
| intltool-extract.in | ||||
| intltool-merge.in | ||||
| libtool | ||||
| ltmain.sh | ||||
| missing | ||||
| .deps | ||||
| 50-mutter-navigation.xml | ||||
| 50-mutter-system.xml | ||||
| 50-mutter-windows.xml | ||||
| @@ -17,25 +33,22 @@ mutter-wayland.desktop | ||||
| *.swp | ||||
| *.gir | ||||
| *.typelib | ||||
| stamp-h1 | ||||
| *.gmo | ||||
| *.make | ||||
| *.log | ||||
| *.trs | ||||
| *~ | ||||
| stamp-it | ||||
| .intltool-merge-cache | ||||
| POTFILES | ||||
| Makevars.template | ||||
| po/*.header | ||||
| po/*.pot | ||||
| po/*.sed | ||||
| po/*.sin | ||||
| Rules-quot | ||||
| libmutter.pc | ||||
| mutter | ||||
| mutter-restart-helper | ||||
| mutter-test-client | ||||
| mutter-test-runner | ||||
| mutter-test-unit-tests | ||||
| mutter-test-headless-start-test | ||||
| mutter-all.test | ||||
| org.gnome.mutter.gschema.valid | ||||
| org.gnome.mutter.gschema.xml | ||||
| @@ -44,14 +57,14 @@ org.gnome.mutter.wayland.gschema.xml | ||||
| testasyncgetprop | ||||
| testboxes | ||||
| testgradient | ||||
| m4/* | ||||
| INSTALL | ||||
| mkinstalldirs | ||||
| meta-enum-types.[ch] | ||||
| src/stamp-meta-enum-types.h | ||||
| src/meta-dbus-display-config.[ch] | ||||
| src/meta-dbus-idle-monitor.[ch] | ||||
| src/meta-dbus-login1.[ch] | ||||
| src/meta-dbus-remote-desktop.[ch] | ||||
| src/meta-dbus-screen-cast.[ch] | ||||
| src/gtk-primary-selection-protocol.c | ||||
| src/gtk-primary-selection-server-protocol.h | ||||
| src/gtk-shell-protocol.c | ||||
| @@ -64,25 +77,7 @@ src/relative-pointer-unstable-v*-protocol.c | ||||
| src/relative-pointer-unstable-v*-server-protocol.h | ||||
| src/pointer-constraints-unstable-v*-protocol.c | ||||
| src/pointer-constraints-unstable-v*-server-protocol.h | ||||
| src/xdg-foreign-unstable-v*-protocol.c | ||||
| src/xdg-foreign-unstable-v*-server-protocol.h | ||||
| src/xdg-output-unstable-v1-protocol.c | ||||
| src/xdg-output-unstable-v1-server-protocol.h | ||||
| src/xwayland-keyboard-grab-unstable-v1-protocol.c | ||||
| src/xwayland-keyboard-grab-unstable-v1-server-protocol.h | ||||
| src/tablet-unstable-v*-protocol.c | ||||
| src/tablet-unstable-v*-server-protocol.h | ||||
| src/text-input-unstable-v*-protocol.c | ||||
| src/text-input-unstable-v*-server-protocol.h | ||||
| src/keyboard-shortcuts-inhibit-unstable-v*-protocol.c | ||||
| src/keyboard-shortcuts-inhibit-unstable-v*-server-protocol.h | ||||
| src/linux-dmabuf-unstable-v*-protocol.c | ||||
| src/linux-dmabuf-unstable-v*-server-protocol.h | ||||
| src/xdg-shell-protocol.c | ||||
| src/xdg-shell-server-protocol.h | ||||
| src/wayland-eglstream-controller-server-protocol.h | ||||
| src/meta/meta-version.h | ||||
| src/libmutter-*.pc | ||||
| doc/reference/*.args | ||||
| doc/reference/*.bak | ||||
| doc/reference/*.hierarchy | ||||
| @@ -100,6 +95,11 @@ doc/reference/meta-undocumented.txt | ||||
| doc/reference/meta-unused.txt | ||||
| doc/reference/meta-docs.sgml | ||||
| doc/reference/meta.types | ||||
| gtk-doc.m4 | ||||
| intltool.m4 | ||||
| libtool.m4 | ||||
| ltoptions.m4 | ||||
| ltsugar.m4 | ||||
| ltversion.m4 | ||||
| lt~obsolete.m4 | ||||
| .dirstamp | ||||
| **/tags.* | ||||
| build/ | ||||
|   | ||||
| @@ -1,93 +0,0 @@ | ||||
| image: registry.gitlab.gnome.org/gnome/mutter/master:v3 | ||||
|  | ||||
| stages: | ||||
|  - review | ||||
|  - build | ||||
|  - test | ||||
|  | ||||
| check-commit-log: | ||||
|   stage: review | ||||
|   variables: | ||||
|     GIT_DEPTH: "100" | ||||
|   script: | ||||
|     - ./.gitlab-ci/check-commit-log.sh | ||||
|   only: | ||||
|     - merge_requests | ||||
|  | ||||
| build-mutter: | ||||
|   stage: build | ||||
|   script: | ||||
|     - meson . build -Dbuildtype=debugoptimized -Degl_device=true -Dwayland_eglstream=true --werror --prefix /usr | ||||
|     - ninja -C build | ||||
|     - ninja -C build install | ||||
|   artifacts: | ||||
|     expire_in: 1 day | ||||
|     paths: | ||||
|       - build | ||||
|   only: | ||||
|     - merge_requests | ||||
|     - /^.*$/ | ||||
|  | ||||
| build-without-opengl-and-glx: | ||||
|   stage: build | ||||
|   script: | ||||
|     - meson . build -Dbuildtype=debugoptimized -Dopengl=false -Dglx=false -Degl_device=true -Dwayland_eglstream=true --werror --prefix /usr | ||||
|     - ninja -C build | ||||
|     - ninja -C build install | ||||
|   artifacts: | ||||
|     expire_in: 1 day | ||||
|     paths: | ||||
|       - build | ||||
|   only: | ||||
|     - merge_requests | ||||
|     - /^.*$/ | ||||
|  | ||||
| build-without-native-backend-and-wayland: | ||||
|   stage: build | ||||
|   script: | ||||
|     - meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false -Dwayland=false -Dcore_tests=false --werror --prefix /usr | ||||
|     - ninja -C build | ||||
|     - ninja -C build install | ||||
|   artifacts: | ||||
|     expire_in: 1 day | ||||
|     paths: | ||||
|       - build | ||||
|   only: | ||||
|     - merge_requests | ||||
|     - /^.*$/ | ||||
|  | ||||
| test-mutter: | ||||
|   stage: test | ||||
|   dependencies: | ||||
|     - build-mutter | ||||
|   variables: | ||||
|     XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir" | ||||
|     GSETTINGS_SCHEMA_DIR: "$CI_PROJECT_DIR/build/data" | ||||
|     G_SLICE: "always-malloc" | ||||
|     MALLOC_CHECK_: "3" | ||||
|     NO_AT_BRIDGE: "1" | ||||
|     MALLOC_PERTURB_: "123" | ||||
|   script: | ||||
|     - dconf update | ||||
|     - mkdir -m 700 $XDG_RUNTIME_DIR | ||||
|     - glib-compile-schemas $GSETTINGS_SCHEMA_DIR | ||||
|     - > | ||||
|       dbus-run-session -- xvfb-run -s '+iglx -noreset' | ||||
|       meson test -C build --no-rebuild -t 10 --verbose --no-stdsplit --print-errorlogs --wrap catchsegv | ||||
|   only: | ||||
|     - merge_requests | ||||
|     - /^.*$/ | ||||
|  | ||||
| can-build-gnome-shell: | ||||
|   stage: test | ||||
|   dependencies: | ||||
|     - build-mutter | ||||
|   before_script: | ||||
|     - meson install --no-rebuild -C build | ||||
|   script: | ||||
|     - .gitlab-ci/checkout-gnome-shell.sh | ||||
|     - meson gnome-shell gnome-shell/build --prefix /usr -Dman=false | ||||
|     - ninja -C gnome-shell/build install | ||||
|   only: | ||||
|     - merge_requests | ||||
|     - /^.*$/ | ||||
| @@ -1,32 +0,0 @@ | ||||
| # Rebuild and push with | ||||
| # | ||||
| #     cd .gitlab-ci/ | ||||
| #     podman build --format docker --no-cache -t registry.gitlab.gnome.org/gnome/mutter/master:v3 . | ||||
| #     podman push registry.gitlab.gnome.org/gnome/mutter/master:v3 | ||||
| # | ||||
|  | ||||
| FROM fedora:31 | ||||
|  | ||||
| RUN dnf -y update && dnf -y upgrade && \ | ||||
|     dnf install -y 'dnf-command(builddep)' && \ | ||||
|     dnf install -y 'dnf-command(copr)' && \ | ||||
|     dnf copr enable -y fmuellner/gnome-shell-ci && \ | ||||
|     dnf copr enable -y jadahl/mutter-ci && \ | ||||
|     dnf -y update && dnf -y upgrade && \ | ||||
|  | ||||
|     dnf builddep -y mutter && \ | ||||
|  | ||||
|     # Until Fedora catches up with new build-deps | ||||
|     dnf install -y 'pkgconfig(graphene-gobject-1.0)' 'pkgconfig(sysprof-capture-3)' && \ | ||||
|  | ||||
|     # For running unit tests | ||||
|     dnf install -y xorg-x11-server-Xvfb mesa-dri-drivers dbus dbus-x11 '*/xvfb-run' gdm-lib accountsservice-libs gnome-control-center && \ | ||||
|  | ||||
|     # GNOME Shell | ||||
|     dnf builddep -y gnome-shell --setopt=install_weak_deps=False && \ | ||||
|     dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel upower-devel python3-devel && \ | ||||
|     dnf remove -y --noautoremove mutter mutter-devel && \ | ||||
|  | ||||
|     dnf upgrade -y 'pkgconfig(libpipewire-0.3)' && \ | ||||
|  | ||||
|     dnf clean all | ||||
| @@ -1,60 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then | ||||
|   echo Cannot review non-merge request | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME | ||||
|  | ||||
| branch_point=$(git merge-base HEAD FETCH_HEAD) | ||||
|  | ||||
| commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA) | ||||
|  | ||||
| if [ -z "$commits" ]; then | ||||
|   echo Commit range empty | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| function commit_message_has_url() { | ||||
|   commit=$1 | ||||
|   commit_message=$(git show -s --format='format:%b' $commit) | ||||
|   echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(-/\)\?\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)" | ||||
|   return $? | ||||
| } | ||||
|  | ||||
| function commit_message_subject_is_compliant() { | ||||
|   commit=$1 | ||||
|   commit_message_subject=$(git show -s --format='format:%s' $commit) | ||||
|  | ||||
|   if echo "$commit_message_subject" | grep -qe "\(^meta-\|^Meta\)"; then | ||||
|     echo " - message subject should not be prefixed with 'meta-' or 'Meta'" | ||||
|     return 1 | ||||
|   fi | ||||
|  | ||||
|   if echo "$commit_message_subject" | grep -qe "\.[ch]:"; then | ||||
|     echo " - message subject prefix should not include .c, .h, etc." | ||||
|     return 1 | ||||
|   fi | ||||
|  | ||||
|   return 0 | ||||
| } | ||||
|  | ||||
| RET=0 | ||||
| for commit in $commits; do | ||||
|   commit_short=$(echo $commit | cut -c -8) | ||||
|  | ||||
|   if ! commit_message_has_url $commit; then | ||||
|     echo "Commit $commit_short needs a merge request or issue URL" | ||||
|     exit 1 | ||||
|   fi | ||||
|  | ||||
|   errors=$(commit_message_subject_is_compliant $commit) | ||||
|   if [ $? != 0 ]; then | ||||
|     echo "Commit message for $commit_short is not compliant:" | ||||
|     echo "$errors" | ||||
|     RET=1 | ||||
|   fi | ||||
| done | ||||
|  | ||||
| exit $RET | ||||
| @@ -1,33 +0,0 @@ | ||||
| #!/usr/bin/bash | ||||
|  | ||||
| gnome_shell_target= | ||||
|  | ||||
| git clone https://gitlab.gnome.org/GNOME/gnome-shell.git | ||||
|  | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo Checkout failed | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| cd gnome-shell | ||||
|  | ||||
| if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then | ||||
|   merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//mutter/gnome-shell} | ||||
|   merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | ||||
|  | ||||
|   echo Looking for $merge_request_branch on remote ... | ||||
|   if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then | ||||
|     gnome_shell_target=FETCH_HEAD | ||||
|   else | ||||
|     gnome_shell_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME | ||||
|     echo Using $gnome_shell_target instead | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| if [ -z "$gnome_shell_target" ]; then | ||||
|   gnome_shell_target=$(git branch -r -l origin/$CI_COMMIT_REF_NAME) | ||||
|   gnome_shell_target=${gnome_shell_target:-origin/master} | ||||
|   echo Using $gnome_shell_target instead | ||||
| fi | ||||
|  | ||||
| git checkout -q $gnome_shell_target | ||||
| @@ -1,55 +0,0 @@ | ||||
| <!--  | ||||
| Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines | ||||
| first to ensure that you create a clear and specific issue. | ||||
| --> | ||||
|  | ||||
| ### Affected version | ||||
|  | ||||
| <!-- | ||||
| Provide at least the following information: | ||||
| * Your OS and version | ||||
| * Affected Mutter version | ||||
| * Does this issue appear in XOrg and/or Wayland | ||||
| --> | ||||
|  | ||||
| ### Bug summary | ||||
|  | ||||
| <!--  | ||||
| Provide a short summary of the bug you encountered. | ||||
| --> | ||||
|  | ||||
| ### Steps to reproduce | ||||
|  | ||||
| <!--  | ||||
| 1. Step one | ||||
| 2. Step two | ||||
| 3. ... | ||||
| --> | ||||
|  | ||||
| ### What happened | ||||
|  | ||||
| <!--  | ||||
| What did Mutter do that was unexpected? | ||||
| --> | ||||
|  | ||||
| ### What did you expect to happen | ||||
|  | ||||
| <!--  | ||||
| What did you expect Mutter to do? | ||||
| --> | ||||
|  | ||||
| ### Relevant logs, screenshots, screencasts etc. | ||||
|  | ||||
| <!--  | ||||
| If you have further information, such as technical documentation, logs, | ||||
| screenshots or screencasts related, please provide them here. | ||||
|  | ||||
| If the bug is a crash, please obtain a stack trace with installed debug | ||||
| symbols (at least for GNOME Shell and Mutter) and attach it to | ||||
| this issue following the instructions on | ||||
| https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces. | ||||
| --> | ||||
|  | ||||
|  | ||||
| <!-- Do not remove the following line. --> | ||||
| /label ~"1. Bug" | ||||
| @@ -1,30 +0,0 @@ | ||||
| <!--  | ||||
| Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines | ||||
| first to ensure that you create a clear and specific issue. | ||||
| --> | ||||
|  | ||||
| ### Feature summary | ||||
|  | ||||
| <!--  | ||||
| Describe what you would like to be able to do with Mutter | ||||
| that you currently cannot do. | ||||
| --> | ||||
|  | ||||
| ### How would you like it to work | ||||
|  | ||||
| <!--  | ||||
| If you can think of a way Mutter might be able to do this, | ||||
| let us know here. | ||||
| --> | ||||
|  | ||||
| ### Relevant links, screenshots, screencasts etc. | ||||
|  | ||||
| <!--  | ||||
| If you have further information, such as technical documentation, | ||||
| code, mockups or a similar feature in another window managers, | ||||
| please provide them here. | ||||
| --> | ||||
|  | ||||
|  | ||||
| <!-- Do not remove the following line. --> | ||||
| /label ~"1. Feature" | ||||
							
								
								
									
										11
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
|  | ||||
| SUBDIRS = cogl clutter data src po doc | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} | ||||
|  | ||||
| DISTCLEANFILES = \ | ||||
| 	intltool-extract \ | ||||
| 	intltool-merge \ | ||||
| 	intltool-update \ | ||||
| 	po/stamp-it \ | ||||
| 	po/.intltool-merge-cache | ||||
							
								
								
									
										45
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,45 +0,0 @@ | ||||
| # Mutter | ||||
|  | ||||
| Mutter is a Wayland display server and X11 window manager and compositor library. | ||||
|  | ||||
| When used as a Wayland display server, it runs on top of KMS and libinput. It | ||||
| implements the compositor side of the Wayland core protocol as well as various | ||||
| protocol extensions. It also has functionality related to running X11 | ||||
| applications using Xwayland. | ||||
|  | ||||
| When used on top of Xorg it acts as a X11 window manager and compositing manager. | ||||
|  | ||||
| It contains functionality related to, among other things, window management, | ||||
| window compositing, focus tracking, workspace management, keybindings and | ||||
| monitor configuration. | ||||
|  | ||||
| Internally it uses a fork of Cogl, a hardware acceleration abstraction library | ||||
| used to simplify usage of OpenGL pipelines, as well as a fork af Clutter, a | ||||
| scene graph and user interface toolkit. | ||||
|  | ||||
| Mutter is used by, for example, GNOME Shell, the GNOME core user interface, and | ||||
| by  Gala, elementary OS's window manager. It can also be run standalone, using | ||||
| the  command "mutter", but just running plain mutter is only intended for | ||||
| debugging purposes. | ||||
|  | ||||
| ## Contributing | ||||
|  | ||||
| To contribute, open merge requests at https://gitlab.gnome.org/GNOME/mutter. | ||||
|  | ||||
| The coding style used is primarily the GNU flavor of the [GNOME coding | ||||
| style](https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en) | ||||
| with some minor additions such as preferring `stdint.h` types over GLib | ||||
| fundamental types, and a soft 80 character line limit. However, in general, | ||||
| look at the file you're editing for inspiration. | ||||
|  | ||||
| Commit messages should follow the [GNOME commit message | ||||
| guidelines](https://wiki.gnome.org/Git/CommitMessages). We require an URL | ||||
| to either an issue or a merge request in each commit. | ||||
|  | ||||
| ## License | ||||
|  | ||||
| Mutter is distributed under the terms of the GNU General Public License, | ||||
| version 2 or later. See the [COPYING][license] file for detalis. | ||||
|  | ||||
| [bug-tracker]: https://gitlab.gnome.org/GNOME/mutter/issues | ||||
| [license]: COPYING | ||||
							
								
								
									
										21
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| #!/bin/sh | ||||
| # Run this to generate all the initial makefiles, etc. | ||||
|  | ||||
| srcdir=`dirname $0` | ||||
| test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| REQUIRED_AUTOMAKE_VERSION=1.11 | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
|   && test -d $srcdir/src) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
|     echo " top-level metacity directory" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from GNOME Subversion (or from" | ||||
|     echo "your distribution's package manager)." | ||||
|     exit 1 | ||||
| } | ||||
| . gnome-autogen.sh | ||||
							
								
								
									
										1
									
								
								clutter/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								clutter/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -23,6 +23,7 @@ clutter-build-config.h.in | ||||
| clutter-config.h | ||||
| clutter-enum-types.[ch] | ||||
| clutter-marshal.[ch] | ||||
| clutter-version.h | ||||
| gcov-report.txt | ||||
| clutter-json.h | ||||
| clutter-lcov.info | ||||
|   | ||||
							
								
								
									
										53
									
								
								clutter/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								clutter/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| NULL = | ||||
|  | ||||
| SUBDIRS = build clutter tests | ||||
|  | ||||
| if BUILD_EXAMPLES | ||||
| SUBDIRS += examples | ||||
| endif | ||||
|  | ||||
| DIST_SUBDIRS = clutter tests examples build | ||||
|  | ||||
| # XXX - this is a massive hack to make autoreconf honour the ACLOCAL_FLAGS | ||||
| # that jhbuild sets while still retaining build/autotools as the authoritative | ||||
| # source for m4 macros | ||||
| ACLOCAL_AMFLAGS = -I build/autotools ${ACLOCAL_FLAGS} | ||||
|  | ||||
| CLEANFILES = $(pcfiles) | ||||
|  | ||||
| DISTCLEANFILES = | ||||
|  | ||||
| DISTCHECK_CONFIGURE_FLAGS = --enable-maintainer-flags | ||||
|  | ||||
| # proxy rules for tests | ||||
| test-report full-report: | ||||
| 	$(MAKE) -C tests/conform $(@) | ||||
|  | ||||
| perf-report: | ||||
| 	$(MAKE) -C tests/performance $(@) | ||||
|  | ||||
| if ENABLE_GCOV | ||||
| # use recursive makes in order to ignore errors during check/perf | ||||
| lcov: | ||||
| 	-$(MAKE) $(AM_MAKEFLAGS) -C clutter check | ||||
| 	-$(MAKE) $(AM_MAKEFLAGS) -C tests/conform test | ||||
| 	$(MAKE) $(AM_MAKEFLAGS) genlcov | ||||
|  | ||||
| # we have to massage the lcov.info file slightly to hide the effect of libtool | ||||
| # placing the objects files in the .libs/ directory separate from the *.c | ||||
| genlcov: | ||||
| 	$(LTP) --directory $(top_builddir) --capture --output-file clutter-lcov.info --test-name CLUTTER_TEST --no-checksum | ||||
| 	$(SED) -e 's#.libs/##' < clutter-lcov.info > clutter-lcov.info.tmp | ||||
| 	LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory clutter-lcov --title "Clutter Code Coverage" --show-details clutter-lcov.info.tmp | ||||
| 	rm -f clutter-lcov.info.tmp | ||||
|  | ||||
| lcov-clean: | ||||
| 	-$(LTP) --directory $(top_builddir) -z | ||||
| 	-$(RM) -rf clutter-lcov.info clutter-lcov | ||||
| else | ||||
| lcov genlcov lcov-clean: | ||||
| 	@echo You need to configure Clutter with support for gcov enabled. | ||||
| 	@echo e.g., ./configure --enable-gcov | ||||
| endif | ||||
|  | ||||
| .PHONY: test-report full-report perf-report lcov genlcov lcov-clean | ||||
							
								
								
									
										1
									
								
								clutter/build/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								clutter/build/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| SUBDIRS = autotools | ||||
							
								
								
									
										8
									
								
								clutter/build/autotools/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								clutter/build/autotools/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| gtk-doc.m4 | ||||
| libtool.m4 | ||||
| ltoptions.m4 | ||||
| ltsugar.m4 | ||||
| ltversion.m4 | ||||
| lt~obsolete.m4 | ||||
| shave | ||||
| shave-libtool | ||||
							
								
								
									
										10
									
								
								clutter/build/autotools/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								clutter/build/autotools/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| NULL = | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	introspection.m4	\ | ||||
| 	as-compiler-flag.m4	\ | ||||
| 	glibtests.m4		\ | ||||
| 	glib-tap.mk		\ | ||||
| 	tap-driver.sh		\ | ||||
| 	tap-test		\ | ||||
| 	$(NULL) | ||||
							
								
								
									
										62
									
								
								clutter/build/autotools/as-compiler-flag.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								clutter/build/autotools/as-compiler-flag.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| dnl as-compiler-flag.m4 0.1.0 | ||||
|  | ||||
| dnl autostars m4 macro for detection of compiler flags | ||||
|  | ||||
| dnl David Schleef <ds@schleef.org> | ||||
|  | ||||
| dnl $Id: as-compiler-flag.m4,v 1.1 2005/12/15 23:35:19 ds Exp $ | ||||
|  | ||||
| dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED]) | ||||
| dnl Tries to compile with the given CFLAGS. | ||||
| dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags, | ||||
| dnl and ACTION-IF-NOT-ACCEPTED otherwise. | ||||
|  | ||||
| AC_DEFUN([AS_COMPILER_FLAG], | ||||
| [ | ||||
|   AC_MSG_CHECKING([to see if compiler understands $1]) | ||||
|  | ||||
|   save_CFLAGS="$CFLAGS" | ||||
|   CFLAGS="$CFLAGS $1" | ||||
|  | ||||
|   AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) | ||||
|   CFLAGS="$save_CFLAGS" | ||||
|  | ||||
|   if test "X$flag_ok" = Xyes ; then | ||||
|     m4_ifvaln([$2],[$2]) | ||||
|     true | ||||
|   else | ||||
|     m4_ifvaln([$3],[$3]) | ||||
|     true | ||||
|   fi | ||||
|   AC_MSG_RESULT([$flag_ok]) | ||||
| ]) | ||||
|  | ||||
| dnl AS_COMPILER_FLAGS(VAR, FLAGS) | ||||
| dnl Tries to compile with the given CFLAGS. | ||||
|  | ||||
| AC_DEFUN([AS_COMPILER_FLAGS], | ||||
| [ | ||||
|   list=$2 | ||||
|   flags_supported="" | ||||
|   flags_unsupported="" | ||||
|   AC_MSG_CHECKING([for supported compiler flags]) | ||||
|   for each in $list | ||||
|   do | ||||
|     save_CFLAGS="$CFLAGS" | ||||
|     CFLAGS="$CFLAGS $each" | ||||
|     AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) | ||||
|     CFLAGS="$save_CFLAGS" | ||||
|  | ||||
|     if test "X$flag_ok" = Xyes ; then | ||||
|       flags_supported="$flags_supported $each" | ||||
|     else | ||||
|       flags_unsupported="$flags_unsupported $each" | ||||
|     fi | ||||
|   done | ||||
|   AC_MSG_RESULT([$flags_supported]) | ||||
|   if test "X$flags_unsupported" != X ; then | ||||
|     AC_MSG_WARN([unsupported compiler flags: $flags_unsupported]) | ||||
|   fi | ||||
|   $1="$$1 $flags_supported" | ||||
| ]) | ||||
|  | ||||
							
								
								
									
										134
									
								
								clutter/build/autotools/glib-tap.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								clutter/build/autotools/glib-tap.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,134 @@ | ||||
| # GLIB - Library of useful C routines | ||||
|  | ||||
| TESTS_ENVIRONMENT= \ | ||||
| 	G_TEST_SRCDIR="$(abs_srcdir)" 		\ | ||||
| 	G_TEST_BUILDDIR="$(abs_builddir)" 	\ | ||||
| 	G_DEBUG=gc-friendly 			\ | ||||
| 	MALLOC_CHECK_=2 			\ | ||||
| 	MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) | ||||
| LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/build/autotools/tap-driver.sh | ||||
| LOG_COMPILER = $(top_srcdir)/build/autotools/tap-test | ||||
|  | ||||
| NULL = | ||||
|  | ||||
| # initialize variables for unconditional += appending | ||||
| BUILT_SOURCES = | ||||
| BUILT_EXTRA_DIST = | ||||
| CLEANFILES = *.log *.trs | ||||
| DISTCLEANFILES = | ||||
| MAINTAINERCLEANFILES = | ||||
| EXTRA_DIST = | ||||
| TESTS = | ||||
|  | ||||
| installed_test_LTLIBRARIES = | ||||
| installed_test_PROGRAMS = | ||||
| installed_test_SCRIPTS = | ||||
| nobase_installed_test_DATA = | ||||
|  | ||||
| noinst_LTLIBRARIES = | ||||
| noinst_PROGRAMS = | ||||
| noinst_SCRIPTS = | ||||
| noinst_DATA = | ||||
|  | ||||
| check_LTLIBRARIES = | ||||
| check_PROGRAMS = | ||||
| check_SCRIPTS = | ||||
| check_DATA = | ||||
|  | ||||
| # We support a fairly large range of possible variables.  It is expected that all types of files in a test suite | ||||
| # will belong in exactly one of the following variables. | ||||
| # | ||||
| # First, we support the usual automake suffixes, but in lowercase, with the customary meaning: | ||||
| # | ||||
| #   test_programs, test_scripts, test_data, test_ltlibraries | ||||
| # | ||||
| # The above are used to list files that are involved in both uninstalled and installed testing.  The | ||||
| # test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. | ||||
| # Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is | ||||
| # installed in the same way as it appears in the package layout. | ||||
| # | ||||
| # In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', | ||||
| # like so: | ||||
| # | ||||
| #   installed_test_programs, uninstalled_test_programs | ||||
| #   installed_test_scripts, uninstalled_test_scripts | ||||
| #   installed_test_data, uninstalled_test_data | ||||
| #   installed_test_ltlibraries, uninstalled_test_ltlibraries | ||||
| # | ||||
| # Additionally, we support 'extra' infixes for programs and scripts.  This is used for support programs/scripts | ||||
| # that should not themselves be run as testcases (but exist to be used from other testcases): | ||||
| # | ||||
| #   test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs | ||||
| #   test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts | ||||
| # | ||||
| # Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data | ||||
| # file automatically end up in the tarball. | ||||
| # | ||||
| #   dist_test_scripts, dist_test_data, dist_test_extra_scripts | ||||
| #   dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts | ||||
| #   dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts | ||||
| # | ||||
| # Note that no file is automatically disted unless it appears in one of the dist_ variables.  This follows the | ||||
| # standard automake convention of not disting programs scripts or data by default. | ||||
| # | ||||
| # test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted | ||||
| # variants) will be run as part of the in-tree 'make check'.  These are all assumed to be runnable under | ||||
| # gtester.  That's a bit strange for scripts, but it's possible. | ||||
|  | ||||
| TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ | ||||
|          $(dist_test_scripts) $(dist_uninstalled_test_scripts) | ||||
|  | ||||
| # Note: build even the installed-only targets during 'make check' to ensure that they still work. | ||||
| # We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to | ||||
| # prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were | ||||
| # filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. | ||||
| all_test_programs     = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ | ||||
|                         $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) | ||||
| all_test_scripts      = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \ | ||||
|                         $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts) | ||||
| all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ | ||||
|                         $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) | ||||
| all_test_scripts     += $(all_dist_test_scripts) | ||||
| EXTRA_DIST           += $(all_dist_test_scripts) | ||||
| all_test_data         = $(test_data) $(uninstalled_test_data) $(installed_test_data) | ||||
| all_dist_test_data    = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) | ||||
| all_test_data        += $(all_dist_test_data) | ||||
| EXTRA_DIST           += $(all_dist_test_data) | ||||
| all_test_ltlibs       = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) | ||||
|  | ||||
| if ENABLE_ALWAYS_BUILD_TESTS | ||||
| noinst_LTLIBRARIES += $(all_test_ltlibs) | ||||
| noinst_PROGRAMS += $(all_test_programs) | ||||
| noinst_SCRIPTS += $(all_test_scripts) | ||||
| noinst_DATA += $(all_test_data) | ||||
| else | ||||
| check_LTLIBRARIES += $(all_test_ltlibs) | ||||
| check_PROGRAMS += $(all_test_programs) | ||||
| check_SCRIPTS += $(all_test_scripts) | ||||
| check_DATA += $(all_test_data) | ||||
| endif | ||||
|  | ||||
| if ENABLE_INSTALLED_TESTS | ||||
| installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \ | ||||
|                           $(test_extra_programs) $(installed_test_extra_programs) | ||||
| installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \ | ||||
|                           $(test_extra_scripts) $(test_installed_extra_scripts) | ||||
| installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \ | ||||
|                           $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts) | ||||
| nobase_installed_test_DATA += $(test_data) $(installed_test_data) | ||||
| nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data) | ||||
| installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries) | ||||
| installed_testcases = $(test_programs) $(installed_test_programs) \ | ||||
|                       $(test_scripts) $(installed_test_scripts) \ | ||||
|                       $(dist_test_scripts) $(dist_installed_test_scripts) | ||||
|  | ||||
| installed_test_meta_DATA = $(installed_testcases:=.test) | ||||
|  | ||||
| %.test: %$(EXEEXT) Makefile | ||||
| 	$(AM_V_GEN) (echo '[Test]' > $@.tmp; \ | ||||
| 	echo 'Type=session' >> $@.tmp; \ | ||||
| 	echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$<' >> $@.tmp; \ | ||||
| 	mv $@.tmp $@) | ||||
|  | ||||
| CLEANFILES += $(installed_test_meta_DATA) | ||||
| endif | ||||
							
								
								
									
										28
									
								
								clutter/build/autotools/glibtests.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								clutter/build/autotools/glibtests.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| dnl GLIB_TESTS | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([GLIB_TESTS], | ||||
| [ | ||||
|   AC_ARG_ENABLE(installed-tests, | ||||
|                 AS_HELP_STRING([--enable-installed-tests], | ||||
|                                [Enable installation of some test cases]), | ||||
|                 [case ${enableval} in | ||||
|                   yes) ENABLE_INSTALLED_TESTS="1"  ;; | ||||
|                   no)  ENABLE_INSTALLED_TESTS="" ;; | ||||
|                   *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;; | ||||
|                  esac]) | ||||
|   AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1") | ||||
|   AC_ARG_ENABLE(always-build-tests, | ||||
|                 AS_HELP_STRING([--enable-always-build-tests], | ||||
|                                [Enable always building tests during 'make all']), | ||||
|                 [case ${enableval} in | ||||
|                   yes) ENABLE_ALWAYS_BUILD_TESTS="1"  ;; | ||||
|                   no)  ENABLE_ALWAYS_BUILD_TESTS="" ;; | ||||
|                   *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;; | ||||
|                  esac]) | ||||
|   AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1") | ||||
|   if test "$ENABLE_INSTALLED_TESTS" = "1"; then | ||||
|     AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME) | ||||
|     AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME) | ||||
|   fi | ||||
| ]) | ||||
							
								
								
									
										96
									
								
								clutter/build/autotools/introspection.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								clutter/build/autotools/introspection.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | ||||
| dnl -*- mode: autoconf -*- | ||||
| dnl Copyright 2009 Johan Dahlin | ||||
| dnl | ||||
| dnl This file is free software; the author(s) gives unlimited | ||||
| dnl permission to copy and/or distribute it, with or without | ||||
| dnl modifications, as long as this notice is preserved. | ||||
| dnl | ||||
|  | ||||
| # serial 1 | ||||
|  | ||||
| m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], | ||||
| [ | ||||
|     AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first | ||||
|     AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first | ||||
|     AC_BEFORE([LT_INIT],[$0])dnl setup libtool first | ||||
|  | ||||
|     dnl enable/disable introspection | ||||
|     m4_if([$2], [require], | ||||
|     [dnl | ||||
|         enable_introspection=yes | ||||
|     ],[dnl | ||||
|         AC_ARG_ENABLE(introspection, | ||||
|                   AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], | ||||
|                                  [Enable introspection for this build]),,  | ||||
|                                  [enable_introspection=auto]) | ||||
|     ])dnl | ||||
|  | ||||
|     AC_MSG_CHECKING([for gobject-introspection]) | ||||
|  | ||||
|     dnl presence/version checking | ||||
|     AS_CASE([$enable_introspection], | ||||
|     [no], [dnl | ||||
|         found_introspection="no (disabled, use --enable-introspection to enable)" | ||||
|     ],dnl | ||||
|     [yes],[dnl | ||||
|         PKG_CHECK_EXISTS([gobject-introspection-1.0],, | ||||
|                          AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) | ||||
|         PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], | ||||
|                          found_introspection=yes, | ||||
|                          AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) | ||||
|     ],dnl | ||||
|     [auto],[dnl | ||||
|         PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) | ||||
| 	dnl Canonicalize enable_introspection | ||||
| 	enable_introspection=$found_introspection | ||||
|     ],dnl | ||||
|     [dnl	 | ||||
|         AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) | ||||
|     ])dnl | ||||
|  | ||||
|     AC_MSG_RESULT([$found_introspection]) | ||||
|  | ||||
|     INTROSPECTION_SCANNER= | ||||
|     INTROSPECTION_COMPILER= | ||||
|     INTROSPECTION_GENERATE= | ||||
|     INTROSPECTION_GIRDIR= | ||||
|     INTROSPECTION_TYPELIBDIR= | ||||
|     if test "x$found_introspection" = "xyes"; then | ||||
|        INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` | ||||
|        INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` | ||||
|        INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` | ||||
|        INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` | ||||
|        INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" | ||||
|        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` | ||||
|        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` | ||||
|        INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection | ||||
|     fi | ||||
|     AC_SUBST(INTROSPECTION_SCANNER) | ||||
|     AC_SUBST(INTROSPECTION_COMPILER) | ||||
|     AC_SUBST(INTROSPECTION_GENERATE) | ||||
|     AC_SUBST(INTROSPECTION_GIRDIR) | ||||
|     AC_SUBST(INTROSPECTION_TYPELIBDIR) | ||||
|     AC_SUBST(INTROSPECTION_CFLAGS) | ||||
|     AC_SUBST(INTROSPECTION_LIBS) | ||||
|     AC_SUBST(INTROSPECTION_MAKEFILE) | ||||
|  | ||||
|     AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") | ||||
| ]) | ||||
|  | ||||
|  | ||||
| dnl Usage: | ||||
| dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) | ||||
|  | ||||
| AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], | ||||
| [ | ||||
|   _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) | ||||
| ]) | ||||
|  | ||||
| dnl Usage: | ||||
| dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) | ||||
|  | ||||
|  | ||||
| AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], | ||||
| [ | ||||
|   _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) | ||||
| ]) | ||||
							
								
								
									
										652
									
								
								clutter/build/autotools/tap-driver.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										652
									
								
								clutter/build/autotools/tap-driver.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,652 @@ | ||||
| #! /bin/sh | ||||
| # Copyright (C) 2011-2013 Free Software Foundation, Inc. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; either version 2, or (at your option) | ||||
| # any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  | ||||
| # As a special exception to the GNU General Public License, if you | ||||
| # distribute this file as part of a program that contains a | ||||
| # configuration script generated by Autoconf, you may include it under | ||||
| # the same distribution terms that you use for the rest of that program. | ||||
|  | ||||
| # This file is maintained in Automake, please report | ||||
| # bugs to <bug-automake@gnu.org> or send patches to | ||||
| # <automake-patches@gnu.org>. | ||||
|  | ||||
| scriptversion=2011-12-27.17; # UTC | ||||
|  | ||||
| # Make unconditional expansion of undefined variables an error.  This | ||||
| # helps a lot in preventing typo-related bugs. | ||||
| set -u | ||||
|  | ||||
| me=tap-driver.sh | ||||
|  | ||||
| fatal () | ||||
| { | ||||
|   echo "$me: fatal: $*" >&2 | ||||
|   exit 1 | ||||
| } | ||||
|  | ||||
| usage_error () | ||||
| { | ||||
|   echo "$me: $*" >&2 | ||||
|   print_usage >&2 | ||||
|   exit 2 | ||||
| } | ||||
|  | ||||
| print_usage () | ||||
| { | ||||
|   cat <<END | ||||
| Usage: | ||||
|   tap-driver.sh --test-name=NAME --log-file=PATH --trs-file=PATH | ||||
|                 [--expect-failure={yes|no}] [--color-tests={yes|no}] | ||||
|                 [--enable-hard-errors={yes|no}] [--ignore-exit] | ||||
|                 [--diagnostic-string=STRING] [--merge|--no-merge] | ||||
|                 [--comments|--no-comments] [--] TEST-COMMAND | ||||
| The \`--test-name', \`--log-file' and \`--trs-file' options are mandatory. | ||||
| END | ||||
| } | ||||
|  | ||||
| # TODO: better error handling in option parsing (in particular, ensure | ||||
| # TODO: $log_file, $trs_file and $test_name are defined). | ||||
| test_name= # Used for reporting. | ||||
| log_file=  # Where to save the result and output of the test script. | ||||
| trs_file=  # Where to save the metadata of the test run. | ||||
| expect_failure=0 | ||||
| color_tests=0 | ||||
| merge=0 | ||||
| ignore_exit=0 | ||||
| comments=0 | ||||
| diag_string='#' | ||||
| while test $# -gt 0; do | ||||
|   case $1 in | ||||
|   --help) print_usage; exit $?;; | ||||
|   --version) echo "$me $scriptversion"; exit $?;; | ||||
|   --test-name) test_name=$2; shift;; | ||||
|   --log-file) log_file=$2; shift;; | ||||
|   --trs-file) trs_file=$2; shift;; | ||||
|   --color-tests) color_tests=$2; shift;; | ||||
|   --expect-failure) expect_failure=$2; shift;; | ||||
|   --enable-hard-errors) shift;; # No-op. | ||||
|   --merge) merge=1;; | ||||
|   --no-merge) merge=0;; | ||||
|   --ignore-exit) ignore_exit=1;; | ||||
|   --comments) comments=1;; | ||||
|   --no-comments) comments=0;; | ||||
|   --diagnostic-string) diag_string=$2; shift;; | ||||
|   --) shift; break;; | ||||
|   -*) usage_error "invalid option: '$1'";; | ||||
|   esac | ||||
|   shift | ||||
| done | ||||
|  | ||||
| test $# -gt 0 || usage_error "missing test command" | ||||
|  | ||||
| case $expect_failure in | ||||
|   yes) expect_failure=1;; | ||||
|     *) expect_failure=0;; | ||||
| esac | ||||
|  | ||||
| if test $color_tests = yes; then | ||||
|   init_colors=' | ||||
|     color_map["red"]="[0;31m" # Red. | ||||
|     color_map["grn"]="[0;32m" # Green. | ||||
|     color_map["lgn"]="[1;32m" # Light green. | ||||
|     color_map["blu"]="[1;34m" # Blue. | ||||
|     color_map["mgn"]="[0;35m" # Magenta. | ||||
|     color_map["std"]="[m"     # No color. | ||||
|     color_for_result["ERROR"] = "mgn" | ||||
|     color_for_result["PASS"]  = "grn" | ||||
|     color_for_result["XPASS"] = "red" | ||||
|     color_for_result["FAIL"]  = "red" | ||||
|     color_for_result["XFAIL"] = "lgn" | ||||
|     color_for_result["SKIP"]  = "blu"' | ||||
| else | ||||
|   init_colors='' | ||||
| fi | ||||
|  | ||||
| # :; is there to work around a bug in bash 3.2 (and earlier) which | ||||
| # does not always set '$?' properly on redirection failure. | ||||
| # See the Autoconf manual for more details. | ||||
| :;{ | ||||
|   ( | ||||
|     # Ignore common signals (in this subshell only!), to avoid potential | ||||
|     # problems with Korn shells.  Some Korn shells are known to propagate | ||||
|     # to themselves signals that have killed a child process they were | ||||
|     # waiting for; this is done at least for SIGINT (and usually only for | ||||
|     # it, in truth).  Without the `trap' below, such a behaviour could | ||||
|     # cause a premature exit in the current subshell, e.g., in case the | ||||
|     # test command it runs gets terminated by a SIGINT.  Thus, the awk | ||||
|     # script we are piping into would never seen the exit status it | ||||
|     # expects on its last input line (which is displayed below by the | ||||
|     # last `echo $?' statement), and would thus die reporting an internal | ||||
|     # error. | ||||
|     # For more information, see the Autoconf manual and the threads: | ||||
|     # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html> | ||||
|     # <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html> | ||||
|     trap : 1 3 2 13 15 | ||||
|     if test $merge -gt 0; then | ||||
|       exec 2>&1 | ||||
|     else | ||||
|       exec 2>&3 | ||||
|     fi | ||||
|     "$@" | ||||
|     echo $? | ||||
|   ) | LC_ALL=C ${AM_TAP_AWK-awk} \ | ||||
|         -v me="$me" \ | ||||
|         -v test_script_name="$test_name" \ | ||||
|         -v log_file="$log_file" \ | ||||
|         -v trs_file="$trs_file" \ | ||||
|         -v expect_failure="$expect_failure" \ | ||||
|         -v merge="$merge" \ | ||||
|         -v ignore_exit="$ignore_exit" \ | ||||
|         -v comments="$comments" \ | ||||
|         -v diag_string="$diag_string" \ | ||||
| ' | ||||
| # FIXME: the usages of "cat >&3" below could be optimized when using | ||||
| # FIXME: GNU awk, and/on on systems that supports /dev/fd/. | ||||
|  | ||||
| # Implementation note: in what follows, `result_obj` will be an | ||||
| # associative array that (partly) simulates a TAP result object | ||||
| # from the `TAP::Parser` perl module. | ||||
|  | ||||
| ## ----------- ## | ||||
| ##  FUNCTIONS  ## | ||||
| ## ----------- ## | ||||
|  | ||||
| function fatal(msg) | ||||
| { | ||||
|   print me ": " msg | "cat >&2" | ||||
|   exit 1 | ||||
| } | ||||
|  | ||||
| function abort(where) | ||||
| { | ||||
|   fatal("internal error " where) | ||||
| } | ||||
|  | ||||
| # Convert a boolean to a "yes"/"no" string. | ||||
| function yn(bool) | ||||
| { | ||||
|   return bool ? "yes" : "no"; | ||||
| } | ||||
|  | ||||
| function add_test_result(result) | ||||
| { | ||||
|   if (!test_results_index) | ||||
|     test_results_index = 0 | ||||
|   test_results_list[test_results_index] = result | ||||
|   test_results_index += 1 | ||||
|   test_results_seen[result] = 1; | ||||
| } | ||||
|  | ||||
| # Whether the test script should be re-run by "make recheck". | ||||
| function must_recheck() | ||||
| { | ||||
|   for (k in test_results_seen) | ||||
|     if (k != "XFAIL" && k != "PASS" && k != "SKIP") | ||||
|       return 1 | ||||
|   return 0 | ||||
| } | ||||
|  | ||||
| # Whether the content of the log file associated to this test should | ||||
| # be copied into the "global" test-suite.log. | ||||
| function copy_in_global_log() | ||||
| { | ||||
|   for (k in test_results_seen) | ||||
|     if (k != "PASS") | ||||
|       return 1 | ||||
|   return 0 | ||||
| } | ||||
|  | ||||
| # FIXME: this can certainly be improved ... | ||||
| function get_global_test_result() | ||||
| { | ||||
|     if ("ERROR" in test_results_seen) | ||||
|       return "ERROR" | ||||
|     if ("FAIL" in test_results_seen || "XPASS" in test_results_seen) | ||||
|       return "FAIL" | ||||
|     all_skipped = 1 | ||||
|     for (k in test_results_seen) | ||||
|       if (k != "SKIP") | ||||
|         all_skipped = 0 | ||||
|     if (all_skipped) | ||||
|       return "SKIP" | ||||
|     return "PASS"; | ||||
| } | ||||
|  | ||||
| function stringify_result_obj(result_obj) | ||||
| { | ||||
|   if (result_obj["is_unplanned"] || result_obj["number"] != testno) | ||||
|     return "ERROR" | ||||
|  | ||||
|   if (plan_seen == LATE_PLAN) | ||||
|     return "ERROR" | ||||
|  | ||||
|   if (result_obj["directive"] == "TODO") | ||||
|     return result_obj["is_ok"] ? "XPASS" : "XFAIL" | ||||
|  | ||||
|   if (result_obj["directive"] == "SKIP") | ||||
|     return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL; | ||||
|  | ||||
|   if (length(result_obj["directive"])) | ||||
|       abort("in function stringify_result_obj()") | ||||
|  | ||||
|   return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL | ||||
| } | ||||
|  | ||||
| function decorate_result(result) | ||||
| { | ||||
|   color_name = color_for_result[result] | ||||
|   if (color_name) | ||||
|     return color_map[color_name] "" result "" color_map["std"] | ||||
|   # If we are not using colorized output, or if we do not know how | ||||
|   # to colorize the given result, we should return it unchanged. | ||||
|   return result | ||||
| } | ||||
|  | ||||
| function report(result, details) | ||||
| { | ||||
|   if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/) | ||||
|     { | ||||
|       msg = ": " test_script_name | ||||
|       add_test_result(result) | ||||
|     } | ||||
|   else if (result == "#") | ||||
|     { | ||||
|       msg = " " test_script_name ":" | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       abort("in function report()") | ||||
|     } | ||||
|   if (length(details)) | ||||
|     msg = msg " " details | ||||
|   # Output on console might be colorized. | ||||
|   print decorate_result(result) msg | ||||
|   # Log the result in the log file too, to help debugging (this is | ||||
|   # especially true when said result is a TAP error or "Bail out!"). | ||||
|   print result msg | "cat >&3"; | ||||
| } | ||||
|  | ||||
| function testsuite_error(error_message) | ||||
| { | ||||
|   report("ERROR", "- " error_message) | ||||
| } | ||||
|  | ||||
| function handle_tap_result() | ||||
| { | ||||
|   details = result_obj["number"]; | ||||
|   if (length(result_obj["description"])) | ||||
|     details = details " " result_obj["description"] | ||||
|  | ||||
|   if (plan_seen == LATE_PLAN) | ||||
|     { | ||||
|       details = details " # AFTER LATE PLAN"; | ||||
|     } | ||||
|   else if (result_obj["is_unplanned"]) | ||||
|     { | ||||
|        details = details " # UNPLANNED"; | ||||
|     } | ||||
|   else if (result_obj["number"] != testno) | ||||
|     { | ||||
|        details = sprintf("%s # OUT-OF-ORDER (expecting %d)", | ||||
|                          details, testno); | ||||
|     } | ||||
|   else if (result_obj["directive"]) | ||||
|     { | ||||
|       details = details " # " result_obj["directive"]; | ||||
|       if (length(result_obj["explanation"])) | ||||
|         details = details " " result_obj["explanation"] | ||||
|     } | ||||
|  | ||||
|   report(stringify_result_obj(result_obj), details) | ||||
| } | ||||
|  | ||||
| # `skip_reason` should be empty whenever planned > 0. | ||||
| function handle_tap_plan(planned, skip_reason) | ||||
| { | ||||
|   planned += 0 # Avoid getting confused if, say, `planned` is "00" | ||||
|   if (length(skip_reason) && planned > 0) | ||||
|     abort("in function handle_tap_plan()") | ||||
|   if (plan_seen) | ||||
|     { | ||||
|       # Error, only one plan per stream is acceptable. | ||||
|       testsuite_error("multiple test plans") | ||||
|       return; | ||||
|     } | ||||
|   planned_tests = planned | ||||
|   # The TAP plan can come before or after *all* the TAP results; we speak | ||||
|   # respectively of an "early" or a "late" plan.  If we see the plan line | ||||
|   # after at least one TAP result has been seen, assume we have a late | ||||
|   # plan; in this case, any further test result seen after the plan will | ||||
|   # be flagged as an error. | ||||
|   plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN) | ||||
|   # If testno > 0, we have an error ("too many tests run") that will be | ||||
|   # automatically dealt with later, so do not worry about it here.  If | ||||
|   # $plan_seen is true, we have an error due to a repeated plan, and that | ||||
|   # has already been dealt with above.  Otherwise, we have a valid "plan | ||||
|   # with SKIP" specification, and should report it as a particular kind | ||||
|   # of SKIP result. | ||||
|   if (planned == 0 && testno == 0) | ||||
|     { | ||||
|       if (length(skip_reason)) | ||||
|         skip_reason = "- "  skip_reason; | ||||
|       report("SKIP", skip_reason); | ||||
|     } | ||||
| } | ||||
|  | ||||
| function extract_tap_comment(line) | ||||
| { | ||||
|   if (index(line, diag_string) == 1) | ||||
|     { | ||||
|       # Strip leading `diag_string` from `line`. | ||||
|       line = substr(line, length(diag_string) + 1) | ||||
|       # And strip any leading and trailing whitespace left. | ||||
|       sub("^[ \t]*", "", line) | ||||
|       sub("[ \t]*$", "", line) | ||||
|       # Return what is left (if any). | ||||
|       return line; | ||||
|     } | ||||
|   return ""; | ||||
| } | ||||
|  | ||||
| # When this function is called, we know that line is a TAP result line, | ||||
| # so that it matches the (perl) RE "^(not )?ok\b". | ||||
| function setup_result_obj(line) | ||||
| { | ||||
|   # Get the result, and remove it from the line. | ||||
|   result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0) | ||||
|   sub("^(not )?ok[ \t]*", "", line) | ||||
|  | ||||
|   # If the result has an explicit number, get it and strip it; otherwise, | ||||
|   # automatically assing the next progresive number to it. | ||||
|   if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/) | ||||
|     { | ||||
|       match(line, "^[0-9]+") | ||||
|       # The final `+ 0` is to normalize numbers with leading zeros. | ||||
|       result_obj["number"] = substr(line, 1, RLENGTH) + 0 | ||||
|       line = substr(line, RLENGTH + 1) | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       result_obj["number"] = testno | ||||
|     } | ||||
|  | ||||
|   if (plan_seen == LATE_PLAN) | ||||
|     # No further test results are acceptable after a "late" TAP plan | ||||
|     # has been seen. | ||||
|     result_obj["is_unplanned"] = 1 | ||||
|   else if (plan_seen && testno > planned_tests) | ||||
|     result_obj["is_unplanned"] = 1 | ||||
|   else | ||||
|     result_obj["is_unplanned"] = 0 | ||||
|  | ||||
|   # Strip trailing and leading whitespace. | ||||
|   sub("^[ \t]*", "", line) | ||||
|   sub("[ \t]*$", "", line) | ||||
|  | ||||
|   # This will have to be corrected if we have a "TODO"/"SKIP" directive. | ||||
|   result_obj["description"] = line | ||||
|   result_obj["directive"] = "" | ||||
|   result_obj["explanation"] = "" | ||||
|  | ||||
|   if (index(line, "#") == 0) | ||||
|     return # No possible directive, nothing more to do. | ||||
|  | ||||
|   # Directives are case-insensitive. | ||||
|   rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*" | ||||
|  | ||||
|   # See whether we have the directive, and if yes, where. | ||||
|   pos = match(line, rx "$") | ||||
|   if (!pos) | ||||
|     pos = match(line, rx "[^a-zA-Z0-9_]") | ||||
|  | ||||
|   # If there was no TAP directive, we have nothing more to do. | ||||
|   if (!pos) | ||||
|     return | ||||
|  | ||||
|   # Let`s now see if the TAP directive has been escaped.  For example: | ||||
|   #  escaped:     ok \# SKIP | ||||
|   #  not escaped: ok \\# SKIP | ||||
|   #  escaped:     ok \\\\\# SKIP | ||||
|   #  not escaped: ok \ # SKIP | ||||
|   if (substr(line, pos, 1) == "#") | ||||
|     { | ||||
|       bslash_count = 0 | ||||
|       for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--) | ||||
|         bslash_count += 1 | ||||
|       if (bslash_count % 2) | ||||
|         return # Directive was escaped. | ||||
|     } | ||||
|  | ||||
|   # Strip the directive and its explanation (if any) from the test | ||||
|   # description. | ||||
|   result_obj["description"] = substr(line, 1, pos - 1) | ||||
|   # Now remove the test description from the line, that has been dealt | ||||
|   # with already. | ||||
|   line = substr(line, pos) | ||||
|   # Strip the directive, and save its value (normalized to upper case). | ||||
|   sub("^[ \t]*#[ \t]*", "", line) | ||||
|   result_obj["directive"] = toupper(substr(line, 1, 4)) | ||||
|   line = substr(line, 5) | ||||
|   # Now get the explanation for the directive (if any), with leading | ||||
|   # and trailing whitespace removed. | ||||
|   sub("^[ \t]*", "", line) | ||||
|   sub("[ \t]*$", "", line) | ||||
|   result_obj["explanation"] = line | ||||
| } | ||||
|  | ||||
| function get_test_exit_message(status) | ||||
| { | ||||
|   if (status == 0) | ||||
|     return "" | ||||
|   if (status !~ /^[1-9][0-9]*$/) | ||||
|     abort("getting exit status") | ||||
|   if (status < 127) | ||||
|     exit_details = "" | ||||
|   else if (status == 127) | ||||
|     exit_details = " (command not found?)" | ||||
|   else if (status >= 128 && status <= 255) | ||||
|     exit_details = sprintf(" (terminated by signal %d?)", status - 128) | ||||
|   else if (status > 256 && status <= 384) | ||||
|     # We used to report an "abnormal termination" here, but some Korn | ||||
|     # shells, when a child process die due to signal number n, can leave | ||||
|     # in $? an exit status of 256+n instead of the more standard 128+n. | ||||
|     # Apparently, both behaviours are allowed by POSIX (2008), so be | ||||
|     # prepared to handle them both.  See also Austing Group report ID | ||||
|     # 0000051 <http://www.austingroupbugs.net/view.php?id=51> | ||||
|     exit_details = sprintf(" (terminated by signal %d?)", status - 256) | ||||
|   else | ||||
|     # Never seen in practice. | ||||
|     exit_details = " (abnormal termination)" | ||||
|   return sprintf("exited with status %d%s", status, exit_details) | ||||
| } | ||||
|  | ||||
| function write_test_results() | ||||
| { | ||||
|   print ":global-test-result: " get_global_test_result() > trs_file | ||||
|   print ":recheck: "  yn(must_recheck()) > trs_file | ||||
|   print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file | ||||
|   for (i = 0; i < test_results_index; i += 1) | ||||
|     print ":test-result: " test_results_list[i] > trs_file | ||||
|   close(trs_file); | ||||
| } | ||||
|  | ||||
| BEGIN { | ||||
|  | ||||
| ## ------- ## | ||||
| ##  SETUP  ## | ||||
| ## ------- ## | ||||
|  | ||||
| '"$init_colors"' | ||||
|  | ||||
| # Properly initialized once the TAP plan is seen. | ||||
| planned_tests = 0 | ||||
|  | ||||
| COOKED_PASS = expect_failure ? "XPASS": "PASS"; | ||||
| COOKED_FAIL = expect_failure ? "XFAIL": "FAIL"; | ||||
|  | ||||
| # Enumeration-like constants to remember which kind of plan (if any) | ||||
| # has been seen.  It is important that NO_PLAN evaluates "false" as | ||||
| # a boolean. | ||||
| NO_PLAN = 0 | ||||
| EARLY_PLAN = 1 | ||||
| LATE_PLAN = 2 | ||||
|  | ||||
| testno = 0     # Number of test results seen so far. | ||||
| bailed_out = 0 # Whether a "Bail out!" directive has been seen. | ||||
|  | ||||
| # Whether the TAP plan has been seen or not, and if yes, which kind | ||||
| # it is ("early" is seen before any test result, "late" otherwise). | ||||
| plan_seen = NO_PLAN | ||||
|  | ||||
| ## --------- ## | ||||
| ##  PARSING  ## | ||||
| ## --------- ## | ||||
|  | ||||
| is_first_read = 1 | ||||
|  | ||||
| while (1) | ||||
|   { | ||||
|     # Involutions required so that we are able to read the exit status | ||||
|     # from the last input line. | ||||
|     st = getline | ||||
|     if (st < 0) # I/O error. | ||||
|       fatal("I/O error while reading from input stream") | ||||
|     else if (st == 0) # End-of-input | ||||
|       { | ||||
|         if (is_first_read) | ||||
|           abort("in input loop: only one input line") | ||||
|         break | ||||
|       } | ||||
|     if (is_first_read) | ||||
|       { | ||||
|         is_first_read = 0 | ||||
|         nextline = $0 | ||||
|         continue | ||||
|       } | ||||
|     else | ||||
|       { | ||||
|         curline = nextline | ||||
|         nextline = $0 | ||||
|         $0 = curline | ||||
|       } | ||||
|     # Copy any input line verbatim into the log file. | ||||
|     print | "cat >&3" | ||||
|     # Parsing of TAP input should stop after a "Bail out!" directive. | ||||
|     if (bailed_out) | ||||
|       continue | ||||
|  | ||||
|     # TAP test result. | ||||
|     if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/) | ||||
|       { | ||||
|         testno += 1 | ||||
|         setup_result_obj($0) | ||||
|         handle_tap_result() | ||||
|       } | ||||
|     # TAP plan (normal or "SKIP" without explanation). | ||||
|     else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/) | ||||
|       { | ||||
|         # The next two lines will put the number of planned tests in $0. | ||||
|         sub("^1\\.\\.", "") | ||||
|         sub("[^0-9]*$", "") | ||||
|         handle_tap_plan($0, "") | ||||
|         continue | ||||
|       } | ||||
|     # TAP "SKIP" plan, with an explanation. | ||||
|     else if ($0 ~ /^1\.\.0+[ \t]*#/) | ||||
|       { | ||||
|         # The next lines will put the skip explanation in $0, stripping | ||||
|         # any leading and trailing whitespace.  This is a little more | ||||
|         # tricky in truth, since we want to also strip a potential leading | ||||
|         # "SKIP" string from the message. | ||||
|         sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "") | ||||
|         sub("[ \t]*$", ""); | ||||
|         handle_tap_plan(0, $0) | ||||
|       } | ||||
|     # "Bail out!" magic. | ||||
|     # Older versions of prove and TAP::Harness (e.g., 3.17) did not | ||||
|     # recognize a "Bail out!" directive when preceded by leading | ||||
|     # whitespace, but more modern versions (e.g., 3.23) do.  So we | ||||
|     # emulate the latter, "more modern" behaviour. | ||||
|     else if ($0 ~ /^[ \t]*Bail out!/) | ||||
|       { | ||||
|         bailed_out = 1 | ||||
|         # Get the bailout message (if any), with leading and trailing | ||||
|         # whitespace stripped.  The message remains stored in `$0`. | ||||
|         sub("^[ \t]*Bail out![ \t]*", ""); | ||||
|         sub("[ \t]*$", ""); | ||||
|         # Format the error message for the | ||||
|         bailout_message = "Bail out!" | ||||
|         if (length($0)) | ||||
|           bailout_message = bailout_message " " $0 | ||||
|         testsuite_error(bailout_message) | ||||
|       } | ||||
|     # Maybe we have too look for dianogtic comments too. | ||||
|     else if (comments != 0) | ||||
|       { | ||||
|         comment = extract_tap_comment($0); | ||||
|         if (length(comment)) | ||||
|           report("#", comment); | ||||
|       } | ||||
|   } | ||||
|  | ||||
| ## -------- ## | ||||
| ##  FINISH  ## | ||||
| ## -------- ## | ||||
|  | ||||
| # A "Bail out!" directive should cause us to ignore any following TAP | ||||
| # error, as well as a non-zero exit status from the TAP producer. | ||||
| if (!bailed_out) | ||||
|   { | ||||
|     if (!plan_seen) | ||||
|       { | ||||
|         testsuite_error("missing test plan") | ||||
|       } | ||||
|     else if (planned_tests != testno) | ||||
|       { | ||||
|         bad_amount = testno > planned_tests ? "many" : "few" | ||||
|         testsuite_error(sprintf("too %s tests run (expected %d, got %d)", | ||||
|                                 bad_amount, planned_tests, testno)) | ||||
|       } | ||||
|     if (!ignore_exit) | ||||
|       { | ||||
|         # Fetch exit status from the last line. | ||||
|         exit_message = get_test_exit_message(nextline) | ||||
|         if (exit_message) | ||||
|           testsuite_error(exit_message) | ||||
|       } | ||||
|   } | ||||
|  | ||||
| write_test_results() | ||||
|  | ||||
| exit 0 | ||||
|  | ||||
| } # End of "BEGIN" block. | ||||
| ' | ||||
|  | ||||
| # TODO: document that we consume the file descriptor 3 :-( | ||||
| } 3>"$log_file" | ||||
|  | ||||
| test $? -eq 0 || fatal "I/O or internal error" | ||||
|  | ||||
| # Local Variables: | ||||
| # mode: shell-script | ||||
| # sh-indentation: 2 | ||||
| # eval: (add-hook 'write-file-hooks 'time-stamp) | ||||
| # time-stamp-start: "scriptversion=" | ||||
| # time-stamp-format: "%:y-%02m-%02d.%02H" | ||||
| # time-stamp-time-zone: "UTC" | ||||
| # time-stamp-end: "; # UTC" | ||||
| # End: | ||||
							
								
								
									
										5
									
								
								clutter/build/autotools/tap-test
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								clutter/build/autotools/tap-test
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #! /bin/sh | ||||
|  | ||||
| # run a GTest in tap mode. The test binary is passed as $1 | ||||
|  | ||||
| $1 -k --tap | ||||
							
								
								
									
										696
									
								
								clutter/clutter/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										696
									
								
								clutter/clutter/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,696 @@ | ||||
| AUTOMAKE_OPTIONS = subdir-objects | ||||
|  | ||||
| # preamble | ||||
| NULL = | ||||
|  | ||||
| # common definitions | ||||
| CLEANFILES = | ||||
| DISTCLEANFILES = | ||||
| EXTRA_DIST = | ||||
| BUILT_SOURCES = | ||||
|  | ||||
| AM_CPPFLAGS = \ | ||||
| 	-DCLUTTER_PREFIX=\""$(prefix)"\"	\ | ||||
| 	-DCLUTTER_LIBDIR=\""$(libdir)"\"	\ | ||||
| 	-DCLUTTER_DATADIR=\""$(datadir)"\"	\ | ||||
| 	-DCLUTTER_LOCALEDIR=\""$(localedir)"\"	\ | ||||
| 	-DCLUTTER_SYSCONFDIR=\""$(sysconfdir)"\" \ | ||||
| 	-DCLUTTER_COMPILATION=1			\ | ||||
| 	-DCOGL_DISABLE_DEPRECATION_WARNINGS	\ | ||||
| 	-DG_LOG_DOMAIN=\"Clutter\" 		\ | ||||
| 	-I$(top_srcdir) 			\ | ||||
| 	-I$(top_srcdir)/clutter			\ | ||||
| 	-I$(top_srcdir)/clutter/cally		\ | ||||
| 	-I$(top_builddir)			\ | ||||
| 	-I$(top_builddir)/clutter		\ | ||||
| 	-I$(top_srcdir)/../cogl			\ | ||||
| 	-I$(top_builddir)/../cogl		\ | ||||
| 	$(CLUTTER_DEPRECATED_CFLAGS)		\ | ||||
| 	$(CLUTTER_DEBUG_CFLAGS)			\ | ||||
| 	$(CLUTTER_HIDDEN_VISIBILITY_CFLAGS)	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
|  | ||||
| # these are the gir files we generate using g-ir-scanner | ||||
| INTROSPECTION_GIRS = | ||||
|  | ||||
| # the base include path for headers | ||||
| clutter_base_includedir = $(includedir)/mutter/clutter-$(CLUTTER_API_VERSION) | ||||
| clutter_includedir = $(clutter_base_includedir)/clutter | ||||
| clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated | ||||
|  | ||||
| # pkg-config files | ||||
| pc_files = | ||||
|  | ||||
| # common sources - please, keep these sorted alphabetically | ||||
| source_h =					\ | ||||
| 	clutter-action.h		\ | ||||
| 	clutter-actor-meta.h		\ | ||||
| 	clutter-actor.h		\ | ||||
| 	clutter-align-constraint.h	\ | ||||
| 	clutter-animatable.h          \ | ||||
| 	clutter-backend.h		\ | ||||
| 	clutter-bind-constraint.h	\ | ||||
| 	clutter-binding-pool.h 	\ | ||||
| 	clutter-bin-layout.h		\ | ||||
| 	clutter-blur-effect.h		\ | ||||
| 	clutter-box-layout.h		\ | ||||
| 	clutter-brightness-contrast-effect.h	\ | ||||
| 	clutter-cairo.h		\ | ||||
| 	clutter-canvas.h		\ | ||||
| 	clutter-child-meta.h		\ | ||||
| 	clutter-click-action.h	\ | ||||
| 	clutter-clone.h		\ | ||||
| 	clutter-color-static.h	\ | ||||
| 	clutter-color.h		\ | ||||
| 	clutter-colorize-effect.h	\ | ||||
| 	clutter-constraint.h		\ | ||||
| 	clutter-container.h		\ | ||||
| 	clutter-content.h		\ | ||||
| 	clutter-deform-effect.h	\ | ||||
| 	clutter-deprecated.h		\ | ||||
| 	clutter-desaturate-effect.h	\ | ||||
| 	clutter-device-manager.h	\ | ||||
| 	clutter-drag-action.h		\ | ||||
| 	clutter-drop-action.h		\ | ||||
| 	clutter-effect.h		\ | ||||
| 	clutter-enums.h		\ | ||||
| 	clutter-event.h 		\ | ||||
| 	clutter-feature.h 		\ | ||||
| 	clutter-fixed-layout.h	\ | ||||
| 	clutter-flow-layout.h		\ | ||||
| 	clutter-gesture-action.h 	\ | ||||
| 	clutter-grid-layout.h 	\ | ||||
| 	clutter-group.h 		\ | ||||
| 	clutter-image.h		\ | ||||
| 	clutter-input-device.h	\ | ||||
| 	clutter-input-device-tool.h	\ | ||||
|         clutter-interval.h            \ | ||||
| 	clutter-keyframe-transition.h	\ | ||||
| 	clutter-keysyms.h 		\ | ||||
| 	clutter-layout-manager.h	\ | ||||
| 	clutter-layout-meta.h		\ | ||||
| 	clutter-macros.h		\ | ||||
| 	clutter-main.h		\ | ||||
| 	clutter-offscreen-effect.h	\ | ||||
| 	clutter-page-turn-effect.h	\ | ||||
| 	clutter-paint-nodes.h		\ | ||||
| 	clutter-paint-node.h		\ | ||||
| 	clutter-pan-action.h		\ | ||||
| 	clutter-path-constraint.h	\ | ||||
| 	clutter-path.h		\ | ||||
| 	clutter-property-transition.h	\ | ||||
| 	clutter-rotate-action.h	\ | ||||
| 	clutter-script.h		\ | ||||
| 	clutter-scriptable.h		\ | ||||
| 	clutter-scroll-actor.h	\ | ||||
| 	clutter-settings.h		\ | ||||
| 	clutter-shader-effect.h	\ | ||||
| 	clutter-shader-types.h	\ | ||||
| 	clutter-swipe-action.h	\ | ||||
| 	clutter-snap-constraint.h	\ | ||||
| 	clutter-stage.h 		\ | ||||
| 	clutter-stage-manager.h	\ | ||||
| 	clutter-stage-view.h		\ | ||||
| 	clutter-tap-action.h		\ | ||||
| 	clutter-test-utils.h		\ | ||||
| 	clutter-texture.h 		\ | ||||
| 	clutter-text.h		\ | ||||
| 	clutter-text-buffer.h		\ | ||||
| 	clutter-timeline.h 		\ | ||||
| 	clutter-transition-group.h	\ | ||||
| 	clutter-transition.h		\ | ||||
| 	clutter-types.h		\ | ||||
| 	clutter-units.h 		\ | ||||
| 	clutter-zoom-action.h		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| source_c = \ | ||||
| 	clutter-action.c		\ | ||||
| 	clutter-actor-box.c		\ | ||||
| 	clutter-actor-meta.c		\ | ||||
| 	clutter-actor.c		\ | ||||
| 	clutter-align-constraint.c	\ | ||||
| 	clutter-animatable.c		\ | ||||
| 	clutter-backend.c		\ | ||||
| 	clutter-base-types.c		\ | ||||
| 	clutter-bezier.c		\ | ||||
| 	clutter-bind-constraint.c	\ | ||||
| 	clutter-binding-pool.c	\ | ||||
| 	clutter-bin-layout.c		\ | ||||
| 	clutter-blur-effect.c		\ | ||||
| 	clutter-box-layout.c		\ | ||||
| 	clutter-brightness-contrast-effect.c	\ | ||||
| 	clutter-cairo.c		\ | ||||
| 	clutter-canvas.c		\ | ||||
| 	clutter-child-meta.c		\ | ||||
| 	clutter-click-action.c	\ | ||||
| 	clutter-clone.c		\ | ||||
| 	clutter-color.c 		\ | ||||
| 	clutter-colorize-effect.c	\ | ||||
| 	clutter-constraint.c		\ | ||||
| 	clutter-container.c		\ | ||||
| 	clutter-content.c		\ | ||||
| 	clutter-deform-effect.c	\ | ||||
| 	clutter-desaturate-effect.c	\ | ||||
| 	clutter-device-manager.c	\ | ||||
| 	clutter-drag-action.c		\ | ||||
| 	clutter-drop-action.c		\ | ||||
| 	clutter-effect.c		\ | ||||
| 	clutter-event.c 		\ | ||||
| 	clutter-feature.c 		\ | ||||
| 	clutter-fixed-layout.c	\ | ||||
| 	clutter-flatten-effect.c	\ | ||||
| 	clutter-flow-layout.c		\ | ||||
| 	clutter-gesture-action.c 	\ | ||||
| 	clutter-grid-layout.c 	\ | ||||
| 	clutter-image.c		\ | ||||
| 	clutter-input-device.c	\ | ||||
| 	clutter-input-device-tool.c	\ | ||||
| 	clutter-interval.c            \ | ||||
| 	clutter-keyframe-transition.c	\ | ||||
| 	clutter-keysyms-table.c	\ | ||||
| 	clutter-layout-manager.c	\ | ||||
| 	clutter-layout-meta.c		\ | ||||
| 	clutter-main.c 		\ | ||||
| 	clutter-master-clock.c	\ | ||||
| 	clutter-master-clock-default.c	\ | ||||
| 	clutter-offscreen-effect.c	\ | ||||
| 	clutter-page-turn-effect.c	\ | ||||
| 	clutter-paint-nodes.c		\ | ||||
| 	clutter-paint-node.c		\ | ||||
| 	clutter-pan-action.c		\ | ||||
| 	clutter-path-constraint.c	\ | ||||
| 	clutter-path.c		\ | ||||
| 	clutter-property-transition.c	\ | ||||
| 	clutter-rotate-action.c	\ | ||||
| 	clutter-script.c		\ | ||||
| 	clutter-script-parser.c	\ | ||||
| 	clutter-scriptable.c		\ | ||||
| 	clutter-scroll-actor.c	\ | ||||
| 	clutter-settings.c		\ | ||||
| 	clutter-shader-effect.c	\ | ||||
| 	clutter-shader-types.c	\ | ||||
| 	clutter-swipe-action.c	\ | ||||
| 	clutter-snap-constraint.c	\ | ||||
| 	clutter-stage.c		\ | ||||
| 	clutter-stage-manager.c	\ | ||||
| 	clutter-stage-view.c	\ | ||||
| 	clutter-stage-window.c	\ | ||||
| 	clutter-tap-action.c		\ | ||||
| 	clutter-test-utils.c		\ | ||||
| 	clutter-text.c		\ | ||||
| 	clutter-text-buffer.c		\ | ||||
| 	clutter-transition-group.c	\ | ||||
| 	clutter-transition.c		\ | ||||
| 	clutter-timeline.c 		\ | ||||
| 	clutter-units.c		\ | ||||
| 	clutter-util.c 		\ | ||||
| 	clutter-paint-volume.c 	\ | ||||
| 	clutter-zoom-action.c 	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # private headers; these should not be distributed or introspected | ||||
| source_h_priv = \ | ||||
| 	clutter-actor-meta-private.h		\ | ||||
| 	clutter-actor-private.h			\ | ||||
| 	clutter-backend-private.h		\ | ||||
| 	clutter-bezier.h			\ | ||||
| 	clutter-constraint-private.h		\ | ||||
| 	clutter-content-private.h		\ | ||||
| 	clutter-debug.h 			\ | ||||
| 	clutter-device-manager-private.h	\ | ||||
| 	clutter-easing.h			\ | ||||
| 	clutter-effect-private.h		\ | ||||
| 	clutter-event-translator.h		\ | ||||
| 	clutter-event-private.h			\ | ||||
| 	clutter-flatten-effect.h		\ | ||||
| 	clutter-gesture-action-private.h	\ | ||||
| 	clutter-id-pool.h 			\ | ||||
| 	clutter-master-clock.h			\ | ||||
| 	clutter-master-clock-default.h		\ | ||||
| 	clutter-offscreen-effect-private.h	\ | ||||
| 	clutter-paint-node-private.h		\ | ||||
| 	clutter-paint-volume-private.h		\ | ||||
| 	clutter-private.h 			\ | ||||
| 	clutter-script-private.h		\ | ||||
| 	clutter-settings-private.h		\ | ||||
| 	clutter-stage-manager-private.h		\ | ||||
| 	clutter-stage-private.h			\ | ||||
| 	clutter-stage-window.h			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # private source code; these should not be introspected | ||||
| source_c_priv = \ | ||||
| 	clutter-easing.c		\ | ||||
| 	clutter-event-translator.c	\ | ||||
| 	clutter-id-pool.c 		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # deprecated installed headers | ||||
| deprecated_h = \ | ||||
| 	deprecated/clutter-actor.h			\ | ||||
| 	deprecated/clutter-alpha.h 			\ | ||||
| 	deprecated/clutter-animatable.h		\ | ||||
| 	deprecated/clutter-animation.h		\ | ||||
| 	deprecated/clutter-animator.h			\ | ||||
| 	deprecated/clutter-backend.h			\ | ||||
| 	deprecated/clutter-behaviour.h 		\ | ||||
| 	deprecated/clutter-behaviour-depth.h 		\ | ||||
| 	deprecated/clutter-behaviour-ellipse.h	\ | ||||
| 	deprecated/clutter-behaviour-opacity.h 	\ | ||||
| 	deprecated/clutter-behaviour-path.h 		\ | ||||
| 	deprecated/clutter-behaviour-rotate.h 	\ | ||||
| 	deprecated/clutter-behaviour-scale.h 		\ | ||||
| 	deprecated/clutter-bin-layout.h		\ | ||||
| 	deprecated/clutter-box.h			\ | ||||
| 	deprecated/clutter-cairo-texture.h		\ | ||||
| 	deprecated/clutter-container.h		\ | ||||
| 	deprecated/clutter-frame-source.h		\ | ||||
| 	deprecated/clutter-group.h			\ | ||||
| 	deprecated/clutter-input-device.h		\ | ||||
| 	deprecated/clutter-keysyms.h			\ | ||||
| 	deprecated/clutter-list-model.h			\ | ||||
| 	deprecated/clutter-main.h			\ | ||||
| 	deprecated/clutter-media.h			\ | ||||
| 	deprecated/clutter-model.h			\ | ||||
| 	deprecated/clutter-rectangle.h		\ | ||||
| 	deprecated/clutter-score.h 			\ | ||||
| 	deprecated/clutter-shader.h 			\ | ||||
| 	deprecated/clutter-stage-manager.h		\ | ||||
| 	deprecated/clutter-stage.h			\ | ||||
| 	deprecated/clutter-state.h			\ | ||||
| 	deprecated/clutter-table-layout.h		\ | ||||
| 	deprecated/clutter-texture.h			\ | ||||
| 	deprecated/clutter-timeline.h 		\ | ||||
| 	deprecated/clutter-timeout-pool.h 		\ | ||||
| 	deprecated/clutter-util.h 			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # deprecated source code | ||||
| deprecated_c = \ | ||||
| 	deprecated/clutter-actor-deprecated.c		\ | ||||
| 	deprecated/clutter-alpha.c 			\ | ||||
| 	deprecated/clutter-animation.c		\ | ||||
| 	deprecated/clutter-animator.c			\ | ||||
| 	deprecated/clutter-behaviour.c 		\ | ||||
| 	deprecated/clutter-behaviour-depth.c		\ | ||||
| 	deprecated/clutter-behaviour-ellipse.c	\ | ||||
| 	deprecated/clutter-behaviour-opacity.c	\ | ||||
| 	deprecated/clutter-behaviour-path.c		\ | ||||
| 	deprecated/clutter-behaviour-rotate.c		\ | ||||
| 	deprecated/clutter-behaviour-scale.c		\ | ||||
| 	deprecated/clutter-box.c			\ | ||||
| 	deprecated/clutter-cairo-texture.c		\ | ||||
| 	deprecated/clutter-frame-source.c		\ | ||||
| 	deprecated/clutter-group.c 			\ | ||||
| 	deprecated/clutter-input-device-deprecated.c	\ | ||||
| 	deprecated/clutter-layout-manager-deprecated.c \ | ||||
| 	deprecated/clutter-list-model.c			\ | ||||
| 	deprecated/clutter-media.c			\ | ||||
| 	deprecated/clutter-model.c			\ | ||||
| 	deprecated/clutter-rectangle.c 		\ | ||||
| 	deprecated/clutter-score.c 			\ | ||||
| 	deprecated/clutter-shader.c 			\ | ||||
| 	deprecated/clutter-state.c			\ | ||||
| 	deprecated/clutter-table-layout.c		\ | ||||
| 	deprecated/clutter-texture.c 			\ | ||||
| 	deprecated/clutter-timeout-pool.c		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # deprecated private headers; these should not be installed | ||||
| deprecated_h_priv = \ | ||||
| 	deprecated/clutter-model-private.h	\ | ||||
| 	deprecated/clutter-timeout-interval.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # deprecated private source code; these should not be introspected | ||||
| deprecated_c_priv = \ | ||||
| 	deprecated/clutter-timeout-interval.c	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # built sources | ||||
| built_source_c = \ | ||||
| 	clutter-enum-types.c			\ | ||||
| 	clutter-marshal.c			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # built headers | ||||
| built_source_h = \ | ||||
| 	clutter-enum-types.h			\ | ||||
| 	clutter-marshal.h			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| # config header | ||||
| DISTCLEANFILES += clutter-config.h | ||||
| EXTRA_DIST += clutter-config.h.in | ||||
|  | ||||
| # version header | ||||
| DISTCLEANFILES += clutter-version.h | ||||
| EXTRA_DIST += clutter-version.h.in clutter-version.h | ||||
|  | ||||
| # key symbol update script | ||||
| EXTRA_DIST += clutter-keysyms-update.pl | ||||
|  | ||||
| pc_files += mutter-clutter-$(CLUTTER_API_VERSION).pc | ||||
|  | ||||
| # in order to be compatible with Clutter < 1.10, when we shipped a single | ||||
| # shared library whose name was determined by the single backend it | ||||
| # supported, we need to install symbolic links so that existing applications | ||||
| # using Clutter won't break in the Brave New World of multi-backend support | ||||
| # in the same shared object. | ||||
| compat_libs = | ||||
|  | ||||
| # backends source listings | ||||
| # | ||||
| #   backend_source_c := source code | ||||
| #   backend_source_h := installed public headers | ||||
| #   backend_source_c_priv := source that should not be scanned by g-i | ||||
| #   backend_source_h_priv := private headers | ||||
| #   backend_source_built := built sources | ||||
| # | ||||
| backend_source_c = | ||||
| backend_source_h = | ||||
| backend_source_c_priv = | ||||
| backend_source_h_priv = | ||||
| backend_source_built = | ||||
|  | ||||
| # X11 backend rules | ||||
| x11_source_c = \ | ||||
| 	x11/clutter-backend-x11.c		\ | ||||
| 	x11/clutter-device-manager-core-x11.c	\ | ||||
| 	x11/clutter-event-x11.c		\ | ||||
| 	x11/clutter-input-device-core-x11.c	\ | ||||
| 	x11/clutter-keymap-x11.c		\ | ||||
| 	x11/clutter-stage-x11.c		\ | ||||
| 	x11/clutter-x11-texture-pixmap.c	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| x11_source_h = \ | ||||
| 	x11/clutter-x11.h			\ | ||||
| 	x11/clutter-x11-texture-pixmap.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| x11_source_h_priv = \ | ||||
| 	x11/clutter-backend-x11.h		\ | ||||
| 	x11/clutter-device-manager-core-x11.h	\ | ||||
| 	x11/clutter-input-device-core-x11.h	\ | ||||
| 	x11/clutter-keymap-x11.h		\ | ||||
| 	x11/clutter-settings-x11.h		\ | ||||
| 	x11/clutter-stage-x11.h		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| x11_source_c_priv = \ | ||||
| 	x11/xsettings/xsettings-client.c	\ | ||||
| 	x11/xsettings/xsettings-client.h	\ | ||||
| 	x11/xsettings/xsettings-common.c	\ | ||||
| 	x11/xsettings/xsettings-common.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| x11_source_c += \ | ||||
| 	x11/clutter-device-manager-xi2.c	\ | ||||
| 	x11/clutter-input-device-xi2.c	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| x11_source_h_priv += \ | ||||
| 	x11/clutter-device-manager-xi2.h	\ | ||||
| 	x11/clutter-input-device-xi2.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| backend_source_h += $(x11_source_h) | ||||
| backend_source_c += $(x11_source_c) | ||||
| backend_source_h_priv += $(x11_source_h_priv) | ||||
| backend_source_c_priv += $(x11_source_c_priv) | ||||
|  | ||||
| # the list of files we want to introspect on X11 | ||||
| x11_introspection = $(x11_source_c) $(x11_source_h) | ||||
|  | ||||
| clutterx11_includedir = $(clutter_includedir)/x11 | ||||
| clutterx11_include_HEADERS = $(x11_source_h) | ||||
|  | ||||
| mutter-clutter-x11-$(CLUTTER_API_VERSION).pc: mutter-clutter-$(CLUTTER_API_VERSION).pc | ||||
| 	$(QUIET_GEN)cp -f $< $(@F) | ||||
|  | ||||
| pc_files += mutter-clutter-x11-$(CLUTTER_API_VERSION).pc | ||||
|  | ||||
| # Shared cogl backend files | ||||
| cogl_source_h = | ||||
|  | ||||
| cogl_source_c = \ | ||||
| 	cogl/clutter-stage-cogl.c	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| cogl_source_h_priv = \ | ||||
| 	cogl/clutter-stage-cogl.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| cogl_source_c_priv = | ||||
|  | ||||
| backend_source_h += $(cogl_source_h) | ||||
| backend_source_c += $(cogl_source_c) | ||||
| backend_source_h_priv += $(cogl_source_h_priv) | ||||
| backend_source_c_priv += $(cogl_source_c_priv) | ||||
|  | ||||
| backend_source_h += $(glx_source_h) | ||||
| backend_source_c += $(glx_source_c) | ||||
|  | ||||
| evdev_c_priv = \ | ||||
| 	evdev/clutter-device-manager-evdev.c	\ | ||||
| 	evdev/clutter-input-device-evdev.c	\ | ||||
| 	evdev/clutter-event-evdev.c		\ | ||||
| 	evdev/clutter-input-device-tool-evdev.c	\ | ||||
| 	$(NULL) | ||||
| evdev_h_priv = \ | ||||
| 	evdev/clutter-device-manager-evdev.h	\ | ||||
| 	evdev/clutter-input-device-evdev.h	\ | ||||
| 	evdev/clutter-input-device-tool-evdev.h	\ | ||||
| 	$(NULL) | ||||
| evdev_h = evdev/clutter-evdev.h | ||||
|  | ||||
| if SUPPORT_WAYLAND | ||||
| backend_source_c_priv += $(evdev_c_priv) | ||||
| backend_source_h_priv += $(evdev_h_priv) | ||||
| backend_source_h += $(evdev_h) | ||||
|  | ||||
| clutterevdev_includedir = $(clutter_includedir)/evdev | ||||
| clutterevdev_include_HEADERS = $(evdev_h) | ||||
|  | ||||
| backend_source_c += evdev/clutter-xkb-utils.c | ||||
| backend_source_h_priv += evdev/clutter-xkb-utils.h | ||||
|  | ||||
| # EGL backend rules | ||||
| egl_source_h = \ | ||||
| 	egl/clutter-egl-headers.h	\ | ||||
| 	egl/clutter-egl.h		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| egl_source_h_priv = egl/clutter-backend-eglnative.h | ||||
| egl_source_c = egl/clutter-backend-eglnative.c | ||||
|  | ||||
| wayland_compositor_source_h = \ | ||||
| 	wayland/clutter-wayland-compositor.h		\ | ||||
| 	wayland/clutter-wayland-surface.h | ||||
| backend_source_h += $(wayland_compositor_source_h) | ||||
| backend_source_c += \ | ||||
| 	wayland/clutter-wayland-surface.c | ||||
|  | ||||
| wayland_compositor_includedir = $(clutter_includedir)/wayland | ||||
| wayland_compositor_include_HEADERS = $(wayland_compositor_source_h) | ||||
|  | ||||
| backend_source_h += $(egl_source_h) | ||||
| backend_source_c += $(egl_source_c) | ||||
| backend_source_h_priv += $(egl_source_h_priv) | ||||
|  | ||||
| clutteregl_includedir = $(clutter_includedir)/egl | ||||
| clutteregl_include_HEADERS = $(egl_source_h) | ||||
| endif # SUPPORT_WAYLAND | ||||
|  | ||||
| # cally | ||||
| cally_sources_h = \ | ||||
| 	cally/cally-actor.h		\ | ||||
| 	cally/cally-clone.h		\ | ||||
| 	cally/cally-factory.h		\ | ||||
| 	cally/cally-group.h		\ | ||||
| 	cally/cally.h			\ | ||||
| 	cally/cally-main.h		\ | ||||
| 	cally/cally-rectangle.h	\ | ||||
| 	cally/cally-root.h		\ | ||||
| 	cally/cally-stage.h		\ | ||||
| 	cally/cally-text.h		\ | ||||
| 	cally/cally-texture.h		\ | ||||
| 	cally/cally-util.h		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| cally_sources_c = \ | ||||
| 	cally/cally-actor.c		\ | ||||
| 	cally/cally.c			\ | ||||
| 	cally/cally-clone.c		\ | ||||
| 	cally/cally-group.c		\ | ||||
| 	cally/cally-rectangle.c	\ | ||||
| 	cally/cally-root.c		\ | ||||
| 	cally/cally-stage.c		\ | ||||
| 	cally/cally-text.c		\ | ||||
| 	cally/cally-texture.c		\ | ||||
| 	cally/cally-util.c		\ | ||||
| 	$(NULL) | ||||
|  | ||||
| cally_sources_private = \ | ||||
| 	cally/cally-actor-private.h	\ | ||||
| 	$(NULL) | ||||
|  | ||||
| cally_includedir = $(clutter_base_includedir)/cally | ||||
| cally_include_HEADERS = $(cally_sources_h) | ||||
|  | ||||
| # general build rules: | ||||
| # you should not need to modify anything below this point | ||||
|  | ||||
| # glib-genmarshal rules | ||||
| glib_marshal_list = clutter-marshal.list | ||||
| glib_marshal_prefix = _clutter_marshal | ||||
| include $(srcdir)/Makefile.am.marshal | ||||
|  | ||||
| # glib-mkenums rules | ||||
| glib_enum_h = clutter-enum-types.h | ||||
| glib_enum_c = clutter-enum-types.c | ||||
| glib_enum_headers = $(source_h) $(deprecated_h) | ||||
| include $(srcdir)/Makefile.am.enums | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = $(pc_files) | ||||
| DISTCLEANFILES += $(pc_files) | ||||
|  | ||||
| clutter_include_HEADERS = $(source_h) clutter.h clutter-version.h clutter-autocleanups.h clutter-mutter.h | ||||
| nodist_clutter_include_HEADERS = clutter-config.h $(built_source_h) | ||||
|  | ||||
| clutter_deprecated_HEADERS = $(deprecated_h) | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_LIBADD = \ | ||||
| 	$(LIBM) \ | ||||
| 	$(CLUTTER_LIBS) \ | ||||
| 	$(top_builddir)/../cogl/cogl/libmutter-cogl.la \ | ||||
| 	$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango.la \ | ||||
| 	$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path.la \ | ||||
| 	$(NULL) | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \ | ||||
| 	$(backend_source_c) \ | ||||
| 	$(backend_source_h) \ | ||||
| 	$(backend_source_c_priv) \ | ||||
| 	$(backend_source_h_priv) \ | ||||
| 	$(source_c) \ | ||||
| 	$(source_h) \ | ||||
| 	$(source_c_priv) \ | ||||
| 	$(source_h_priv) \ | ||||
| 	$(deprecated_c) \ | ||||
| 	$(deprecated_h) \ | ||||
| 	$(deprecated_c_priv) \ | ||||
| 	$(deprecated_h_priv) \ | ||||
| 	$(cally_sources_c) \ | ||||
| 	$(cally_sources_h) \ | ||||
| 	$(cally_sources_private) \ | ||||
| 	$(NULL) | ||||
|  | ||||
| nodist_libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \ | ||||
| 	$(backend_source_built) \ | ||||
| 	$(built_source_c) \ | ||||
| 	$(built_source_h) | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	$(CLUTTER_LINK_FLAGS) \ | ||||
| 	$(CLUTTER_LT_LDFLAGS) \ | ||||
| 	-export-dynamic \ | ||||
| 	-rpath $(mutterlibdir) \ | ||||
| 	$(NULL) | ||||
|  | ||||
| install-exec-local: | ||||
| 	test -z "$(mutterlibdir)" || $(MKDIR_P) "$(DESTDIR)$(mutterlibdir)" | ||||
| 	for lib in `echo $(compat_libs)`; do \ | ||||
| 	  (cd $(DESTDIR)$(mutterlibdir) && \ | ||||
| 	    rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \ | ||||
| 	  ) ; \ | ||||
| 	  (cd $(DESTDIR)$(mutterlibdir) && \ | ||||
| 	    { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \ | ||||
| 	      { rm -f $$lib.0 && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \ | ||||
| 	    } \ | ||||
| 	  ) ; \ | ||||
| 	  (cd $(DESTDIR)$(mutterlibdir) && \ | ||||
| 	    { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \ | ||||
| 	      { rm -f $$lib && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \ | ||||
| 	    } \ | ||||
| 	  ) ; \ | ||||
| 	done | ||||
|  | ||||
| # gobject-introspection rules | ||||
| -include $(INTROSPECTION_MAKEFILE) | ||||
|  | ||||
| INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/../cogl/cogl --add-include-path=$(top_builddir)/../cogl/cogl-pango | ||||
| INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/../cogl/cogl --includedir=$(top_builddir)/../cogl/cogl-pango | ||||
|  | ||||
| Clutter-@CLUTTER_API_VERSION@.gir: libmutter-clutter-@CLUTTER_API_VERSION@.la Makefile | ||||
|  | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Clutter | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@ | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_FILES = \ | ||||
| 	$(clutter_include_HEADERS) \ | ||||
| 	$(clutter_deprecated_HEADERS) \ | ||||
| 	$(nodist_clutter_include_HEADERS) \ | ||||
| 	$(source_c) \ | ||||
| 	$(deprecated_c) \ | ||||
| 	$(built_source_c) | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-1.0 CoglPango-1.0 Atk-1.0 Json-1.0 | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='clutter/clutter.h' \ | ||||
| 	--pkg-export=mutter-clutter-@CLUTTER_API_VERSION@ | ||||
|  | ||||
| INTROSPECTION_GIRS += Clutter-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| Cally-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Cally | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@ | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_FILES = $(cally_sources_h) $(cally_sources_c) | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='cally/cally.h' \ | ||||
| 	--pkg-export=mutter-cally-@CLUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| INTROSPECTION_GIRS += Cally-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| ClutterX11-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = ClutterX11 | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = xlib-2.0 | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_FILES = $(x11_introspection) | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='clutter/x11/clutter-x11.h' \ | ||||
| 	--pkg-export=mutter-clutter-x11-@CLUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| INTROSPECTION_GIRS += ClutterX11-@CLUTTER_API_VERSION@.gir | ||||
|  | ||||
| # INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to | ||||
| # install anything - we need to install inside our prefix. | ||||
| girdir = $(mutterlibdir) | ||||
| gir_DATA = $(INTROSPECTION_GIRS) | ||||
|  | ||||
| typelibdir = $(mutterlibdir) | ||||
| typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) | ||||
|  | ||||
| EXTRA_DIST += \ | ||||
| 	Makefile.am.marshal	\ | ||||
| 	Makefile.am.enums | ||||
|  | ||||
| CLEANFILES += $(gir_DATA) $(typelib_DATA) | ||||
							
								
								
									
										52
									
								
								clutter/clutter/Makefile.am.enums
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								clutter/clutter/Makefile.am.enums
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| # Rules for generating enumeration types using glib-mkenums | ||||
| # | ||||
| # Define: | ||||
| # 	glib_enum_h = header template file | ||||
| # 	glib_enum_c = source template file | ||||
| # 	glib_enum_headers = list of headers to parse | ||||
| # | ||||
| # before including Makefile.am.enums. You will also need to have | ||||
| # the following targets already defined: | ||||
| # | ||||
| # 	CLEANFILES | ||||
| #	DISTCLEANFILES | ||||
| #	BUILT_SOURCES | ||||
| #	EXTRA_DIST | ||||
| # | ||||
| # Author: Emmanuele Bassi <ebassi@linux.intel.com> | ||||
|  | ||||
| # Basic sanity checks | ||||
| $(if $(GLIB_MKENUMS),,$(error Need to define GLIB_MKENUMS)) | ||||
|  | ||||
| $(if $(or $(glib_enum_h), \ | ||||
|           $(glib_enum_c)),, \ | ||||
|     $(error Need to define glib_enum_h and glib_enum_c)) | ||||
|  | ||||
| $(if $(glib_enum_headers),,$(error Need to define glib_enum_headers)) | ||||
|  | ||||
| enum_tmpl_h=$(addprefix $(srcdir)/, $(glib_enum_h:.h=.h.in)) | ||||
| enum_tmpl_c=$(addprefix $(srcdir)/, $(glib_enum_c:.c=.c.in)) | ||||
| enum_headers=$(addprefix $(srcdir)/, $(glib_enum_headers)) | ||||
|  | ||||
| CLEANFILES += stamp-enum-types | ||||
| DISTCLEANFILES += $(glib_enum_h) $(glib_enum_c) | ||||
| BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c) | ||||
| EXTRA_DIST += $(enum_tmpl_h) $(enum_tmpl_c) | ||||
|  | ||||
| stamp-enum-types: $(enum_headers) $(enum_tmpl_h) | ||||
| 	$(AM_V_GEN)$(GLIB_MKENUMS) \ | ||||
| 		--template $(enum_tmpl_h) \ | ||||
| 	$(enum_headers) > xgen-eh \ | ||||
| 	&& (cmp -s xgen-eh $(glib_enum_h) || cp -f xgen-eh $(glib_enum_h)) \ | ||||
| 	&& rm -f xgen-eh \ | ||||
| 	&& echo timestamp > $(@F) | ||||
|  | ||||
| $(glib_enum_h): stamp-enum-types | ||||
| 	@true | ||||
|  | ||||
| $(glib_enum_c): $(enum_headers) $(enum_tmpl_h) $(enum_tmpl_c) | ||||
| 	$(AM_V_GEN)$(GLIB_MKENUMS) \ | ||||
| 		--template $(enum_tmpl_c) \ | ||||
| 	$(enum_headers) > xgen-ec \ | ||||
| 	&& cp -f xgen-ec $(glib_enum_c) \ | ||||
| 	&& rm -f xgen-ec | ||||
							
								
								
									
										52
									
								
								clutter/clutter/Makefile.am.marshal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								clutter/clutter/Makefile.am.marshal
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| # Rules for generating marshal files using glib-genmarshal | ||||
| # | ||||
| # Define: | ||||
| # 	glib_marshal_list = marshal list file | ||||
| # 	glib_marshal_prefix = prefix for marshal functions | ||||
| # | ||||
| # before including Makefile.am.marshal. You will also need to have | ||||
| # the following targets already defined: | ||||
| # | ||||
| # 	CLEANFILES | ||||
| #	DISTCLEANFILES | ||||
| #	BUILT_SOURCES | ||||
| #	EXTRA_DIST | ||||
| # | ||||
| # Author: Emmanuele Bassi <ebassi@linux.intel.com> | ||||
|  | ||||
| # Basic sanity checks | ||||
| $(if $(GLIB_GENMARSHAL),,$(error Need to define GLIB_GENMARSHAL)) | ||||
|  | ||||
| $(if $(or $(glib_marshal_list), \ | ||||
|           $(glib_marshal_prefix)),, \ | ||||
|     $(error Need to define glib_marshal_list and glib_marshal_prefix)) | ||||
|  | ||||
| marshal_h = $(glib_marshal_list:.list=.h) | ||||
| marshal_c = $(glib_marshal_list:.list=.c) | ||||
| marshal_list = $(addprefix $(srcdir)/, $(glib_marshal_list)) | ||||
|  | ||||
| CLEANFILES += stamp-marshal | ||||
| DISTCLEANFILES += $(marshal_h) $(marshal_c) | ||||
| BUILT_SOURCES += $(marshal_h) $(marshal_c) | ||||
| EXTRA_DIST += $(marshal_list) | ||||
|  | ||||
| stamp-marshal: $(marshal_list) | ||||
| 	$(AM_V_GEN)$(GLIB_GENMARSHAL) \ | ||||
| 		--prefix=$(glib_marshal_prefix) \ | ||||
| 		--header \ | ||||
| 	$(marshal_list) > xgen-mh \ | ||||
| 	&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \ | ||||
| 	&& rm -f xgen-mh \ | ||||
| 	&& echo timestamp > $(@F) | ||||
|  | ||||
| $(marshal_h): stamp-marshal | ||||
| 	@true | ||||
|  | ||||
| $(marshal_c): $(marshal_h) | ||||
| 	$(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \ | ||||
| 	$(GLIB_GENMARSHAL) \ | ||||
| 		--prefix=$(glib_marshal_prefix) \ | ||||
| 		--body \ | ||||
| 	$(marshal_list)) > xgen-mc \ | ||||
| 	&& cp xgen-mc $(marshal_c) \ | ||||
| 	&& rm -f xgen-mc | ||||
| @@ -67,7 +67,9 @@ | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <clutter/clutter.h> | ||||
| @@ -310,7 +312,11 @@ cally_actor_finalize (GObject *obj) | ||||
|  | ||||
|   _cally_actor_clean_action_list (cally_actor); | ||||
|  | ||||
|   g_clear_handle_id (&priv->action_idle_handler, g_source_remove); | ||||
|   if (priv->action_idle_handler) | ||||
|     { | ||||
|       g_source_remove (priv->action_idle_handler); | ||||
|       priv->action_idle_handler = 0; | ||||
|     } | ||||
|  | ||||
|   if (priv->action_queue) | ||||
|     { | ||||
| @@ -600,11 +606,10 @@ cally_actor_real_remove_actor (ClutterActor *container, | ||||
|   g_return_val_if_fail (CLUTTER_IS_ACTOR (actor), 0); | ||||
|  | ||||
|   atk_parent = ATK_OBJECT (data); | ||||
|   atk_child = clutter_actor_get_accessible (actor); | ||||
|  | ||||
|   if (clutter_actor_has_accessible (actor)) | ||||
|   if (atk_child) | ||||
|     { | ||||
|       atk_child = clutter_actor_get_accessible (actor); | ||||
|  | ||||
|       g_value_init (&values.old_value, G_TYPE_POINTER); | ||||
|       g_value_set_pointer (&values.old_value, atk_parent); | ||||
|  | ||||
| @@ -654,7 +659,7 @@ cally_actor_get_extents (AtkComponent *component, | ||||
|   ClutterActor *actor      = NULL; | ||||
|   gint          top_level_x, top_level_y; | ||||
|   gfloat        f_width, f_height; | ||||
|   graphene_point3d_t verts[4]; | ||||
|   ClutterVertex verts[4]; | ||||
|   ClutterActor  *stage = NULL; | ||||
|  | ||||
|   g_return_if_fail (CALLY_IS_ACTOR (component)); | ||||
| @@ -734,7 +739,11 @@ cally_actor_grab_focus (AtkComponent    *component) | ||||
|  * | ||||
|  * This gets the top level origin, it is, the position of the stage in | ||||
|  * the global screen. You can see it as the absolute display position | ||||
|  * of the stage. This is 0,0 for a compositor. | ||||
|  * of the stage. | ||||
|  * | ||||
|  * FIXME: only the case with x11 is implemented, other backends are | ||||
|  * required | ||||
|  * | ||||
|  */ | ||||
| void | ||||
| _cally_actor_get_top_level_origin (ClutterActor *actor, | ||||
| @@ -742,11 +751,55 @@ _cally_actor_get_top_level_origin (ClutterActor *actor, | ||||
|                                    gint         *yp) | ||||
| { | ||||
|   /* default values */ | ||||
|   gint x = 0; | ||||
|   gint y = 0; | ||||
|  | ||||
| #ifdef CLUTTER_WINDOWING_X11 | ||||
|   if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11)) | ||||
|     { | ||||
|       ClutterActor *stage      = NULL; | ||||
|       Display *display    = NULL; | ||||
|       Window root_window; | ||||
|       Window stage_window; | ||||
|       Window child; | ||||
|       gint return_val = 0; | ||||
|  | ||||
|       stage = clutter_actor_get_stage (actor); | ||||
|  | ||||
|       /* FIXME: what happens if you use another display with | ||||
|          clutter_backend_x11_set_display ?*/ | ||||
|       display = clutter_x11_get_default_display (); | ||||
|       root_window = clutter_x11_get_root_window (); | ||||
|       stage_window = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); | ||||
|  | ||||
|       return_val = XTranslateCoordinates (display, stage_window, root_window, | ||||
|                                           0, 0, &x, &y, | ||||
|                                           &child); | ||||
|  | ||||
|       if (!return_val) | ||||
|         g_warning ("[x11] We were not able to get proper absolute " | ||||
|                    "position of the stage"); | ||||
|     } | ||||
|   else | ||||
| #else | ||||
|     { | ||||
|       static gboolean yet_warned = FALSE; | ||||
|  | ||||
|       if (!yet_warned) | ||||
|         { | ||||
|           yet_warned = TRUE; | ||||
|  | ||||
|           g_warning ("The current Clutter backend does not support using " | ||||
|                      "atk_component_get_extents() with ATK_XY_SCREEN."); | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|   if (xp) | ||||
|     *xp = 0; | ||||
|     *xp = x; | ||||
|  | ||||
|   if (yp) | ||||
|     *yp = 0; | ||||
|     *yp = y; | ||||
| } | ||||
|  | ||||
| /* AtkAction implementation */ | ||||
| @@ -994,8 +1047,10 @@ _cally_actor_clean_action_list (CallyActor *cally_actor) | ||||
|  | ||||
|   if (priv->action_list) | ||||
|     { | ||||
|       g_list_free_full (priv->action_list, | ||||
|                         (GDestroyNotify) _cally_actor_destroy_action_info); | ||||
|       g_list_foreach (priv->action_list, | ||||
|                       (GFunc) _cally_actor_destroy_action_info, | ||||
|                       NULL); | ||||
|       g_list_free (priv->action_list); | ||||
|       priv->action_list = NULL; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -126,19 +126,19 @@ struct _CallyActorClass | ||||
|   gpointer _padding_dummy[32]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_actor_get_type              (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject* cally_actor_new                   (ClutterActor        *actor); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| guint      cally_actor_add_action            (CallyActor          *cally_actor, | ||||
|                                               const gchar         *action_name, | ||||
|                                               const gchar         *action_description, | ||||
|                                               const gchar         *action_keybinding, | ||||
|                                               CallyActionFunc      action_func); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_6 | ||||
| guint      cally_actor_add_action_full       (CallyActor          *cally_actor, | ||||
|                                               const gchar         *action_name, | ||||
|                                               const gchar         *action_description, | ||||
| @@ -147,11 +147,11 @@ guint      cally_actor_add_action_full       (CallyActor          *cally_actor, | ||||
|                                               gpointer             user_data, | ||||
|                                               GDestroyNotify       notify); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean   cally_actor_remove_action         (CallyActor          *cally_actor, | ||||
|                                               gint                 action_id); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean   cally_actor_remove_action_by_name (CallyActor          *cally_actor, | ||||
|                                               const gchar         *action_name); | ||||
|  | ||||
|   | ||||
| @@ -74,9 +74,9 @@ struct _CallyCloneClass | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_clone_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject *cally_clone_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -77,9 +77,9 @@ struct _CallyGroupClass | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_group_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject* cally_group_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -34,9 +34,9 @@ | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean cally_get_cally_initialized (void); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean cally_accessibility_init    (void); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -74,9 +74,9 @@ struct _CallyRectangleClass | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_rectangle_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject* cally_rectangle_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -75,8 +75,8 @@ struct _CallyRootPrivate | ||||
|   GSList *stage_list; | ||||
|  | ||||
|   /* signals id */ | ||||
|   gulong stage_added_id; | ||||
|   gulong stage_removed_id; | ||||
|   guint stage_added_id; | ||||
|   guint stage_removed_id; | ||||
| }; | ||||
|  | ||||
| G_DEFINE_TYPE_WITH_PRIVATE (CallyRoot, cally_root,  ATK_TYPE_GOBJECT_ACCESSIBLE) | ||||
| @@ -149,9 +149,11 @@ cally_root_finalize (GObject *object) | ||||
|  | ||||
|   stage_manager = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (root)); | ||||
|  | ||||
|   g_clear_signal_handler (&root->priv->stage_added_id, stage_manager); | ||||
|   g_signal_handler_disconnect (stage_manager, | ||||
|                                root->priv->stage_added_id); | ||||
|  | ||||
|   g_clear_signal_handler (&root->priv->stage_removed_id, stage_manager); | ||||
|   g_signal_handler_disconnect (stage_manager, | ||||
|                                root->priv->stage_added_id); | ||||
|  | ||||
|   G_OBJECT_CLASS (cally_root_parent_class)->finalize (object); | ||||
| } | ||||
|   | ||||
| @@ -74,9 +74,9 @@ struct _CallyRootClass | ||||
|   gpointer _padding_dummy[16]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_root_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject *cally_root_new      (void); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -74,9 +74,9 @@ struct _CallyStageClass | ||||
|   gpointer _padding_dummy[16]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_stage_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject *cally_stage_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -39,7 +39,9 @@ | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "cally-text.h" | ||||
| #include "cally-actor-private.h" | ||||
| @@ -247,7 +249,11 @@ cally_text_finalize   (GObject *obj) | ||||
| /*   g_object_unref (cally_text->priv->textutil); */ | ||||
| /*   cally_text->priv->textutil = NULL; */ | ||||
|  | ||||
|   g_clear_handle_id (&cally_text->priv->insert_idle_handler, g_source_remove); | ||||
|   if (cally_text->priv->insert_idle_handler) | ||||
|     { | ||||
|       g_source_remove (cally_text->priv->insert_idle_handler); | ||||
|       cally_text->priv->insert_idle_handler = 0; | ||||
|     } | ||||
|  | ||||
|   G_OBJECT_CLASS (cally_text_parent_class)->finalize (obj); | ||||
| } | ||||
| @@ -1434,7 +1440,7 @@ static void cally_text_get_character_extents (AtkText *text, | ||||
|   PangoLayout *layout; | ||||
|   PangoRectangle extents; | ||||
|   const gchar *text_value; | ||||
|   graphene_point3d_t verts[4]; | ||||
|   ClutterVertex verts[4]; | ||||
|  | ||||
|   actor = CALLY_GET_CLUTTER_ACTOR (text); | ||||
|   if (actor == NULL) /* State is defunct */ | ||||
| @@ -2290,7 +2296,7 @@ _cally_misc_get_index_at_point (ClutterText *clutter_text, | ||||
|   gint index, x_window, y_window, x_toplevel, y_toplevel; | ||||
|   gint x_temp, y_temp; | ||||
|   gboolean ret; | ||||
|   graphene_point3d_t verts[4]; | ||||
|   ClutterVertex verts[4]; | ||||
|   PangoLayout *layout; | ||||
|   gint x_layout, y_layout; | ||||
|  | ||||
|   | ||||
| @@ -74,9 +74,9 @@ struct _CallyTextClass | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_text_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject* cally_text_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
							
								
								
									
										98
									
								
								clutter/clutter/cally/cally-texture.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								clutter/clutter/cally/cally-texture.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| /* CALLY - The Clutter Accessibility Implementation Library | ||||
|  * | ||||
|  * Copyright (C) 2009 Igalia, S.L. | ||||
|  * | ||||
|  * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com> | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public | ||||
|  * License along with this library; if not, write to the | ||||
|  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|  * Boston, MA 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:cally-texture | ||||
|  * @Title: CallyTexture | ||||
|  * @short_description: Implementation of the ATK interfaces for a #ClutterTexture | ||||
|  * @see_also: #ClutterTexture | ||||
|  * | ||||
|  * #CallyTexture implements the required ATK interfaces of #ClutterTexture | ||||
|  * | ||||
|  * In particular it sets a proper role for the texture. | ||||
|  */ | ||||
| #include "clutter-build-config.h" | ||||
|  | ||||
| #define CLUTTER_DISABLE_DEPRECATION_WARNINGS | ||||
|  | ||||
| #include "cally-texture.h" | ||||
| #include "cally-actor-private.h" | ||||
|  | ||||
| #include "deprecated/clutter-texture.h" | ||||
|  | ||||
| /* AtkObject */ | ||||
| static void                  cally_texture_real_initialize (AtkObject *obj, | ||||
|                                                            gpointer   data); | ||||
|  | ||||
| G_DEFINE_TYPE (CallyTexture, cally_texture, CALLY_TYPE_ACTOR) | ||||
|  | ||||
| static void | ||||
| cally_texture_class_init (CallyTextureClass *klass) | ||||
| { | ||||
| /*   GObjectClass   *gobject_class = G_OBJECT_CLASS (klass); */ | ||||
|   AtkObjectClass *class         = ATK_OBJECT_CLASS (klass); | ||||
|  | ||||
|   class->initialize      = cally_texture_real_initialize; | ||||
| } | ||||
|  | ||||
| static void | ||||
| cally_texture_init (CallyTexture *texture) | ||||
| { | ||||
|   /* nothing to do yet */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * cally_texture_new: | ||||
|  * @actor: a #ClutterActor | ||||
|  * | ||||
|  * Creates a new #CallyTexture for the given @actor. @actor must be | ||||
|  * a #ClutterTexture. | ||||
|  * | ||||
|  * Return value: the newly created #AtkObject | ||||
|  * | ||||
|  * Since: 1.4 | ||||
|  */ | ||||
| AtkObject* | ||||
| cally_texture_new (ClutterActor *actor) | ||||
| { | ||||
|   GObject   *object     = NULL; | ||||
|   AtkObject *accessible = NULL; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_TEXTURE (actor), NULL); | ||||
|  | ||||
|   object = g_object_new (CALLY_TYPE_TEXTURE, NULL); | ||||
|  | ||||
|   accessible = ATK_OBJECT (object); | ||||
|   atk_object_initialize (accessible, actor); | ||||
|  | ||||
|   return accessible; | ||||
| } | ||||
|  | ||||
| static void | ||||
| cally_texture_real_initialize (AtkObject *obj, | ||||
|                               gpointer   data) | ||||
| { | ||||
|   ATK_OBJECT_CLASS (cally_texture_parent_class)->initialize (obj, data); | ||||
|  | ||||
|   /* default role */ | ||||
|   obj->role = ATK_ROLE_IMAGE; | ||||
| } | ||||
							
								
								
									
										84
									
								
								clutter/clutter/cally/cally-texture.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								clutter/clutter/cally/cally-texture.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| /* CALLY - The Clutter Accessibility Implementation Library | ||||
|  * | ||||
|  * Copyright (C) 2009 Igalia, S.L. | ||||
|  * | ||||
|  * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com> | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public | ||||
|  * License along with this library. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| #ifndef __CALLY_TEXTURE_H__ | ||||
| #define __CALLY_TEXTURE_H__ | ||||
|  | ||||
| #if !defined(__CALLY_H_INSIDE__) && !defined(CLUTTER_COMPILATION) | ||||
| #error "Only <cally/cally.h> can be included directly." | ||||
| #endif | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| #include <cally/cally-actor.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define CALLY_TYPE_TEXTURE            (cally_texture_get_type ()) | ||||
| #define CALLY_TEXTURE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CALLY_TYPE_TEXTURE, CallyTexture)) | ||||
| #define CALLY_TEXTURE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CALLY_TYPE_TEXTURE, CallyTextureClass)) | ||||
| #define CALLY_IS_TEXTURE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CALLY_TYPE_TEXTURE)) | ||||
| #define CALLY_IS_TEXTURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CALLY_TYPE_TEXTURE)) | ||||
| #define CALLY_TEXTURE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CALLY_TYPE_TEXTURE, CallyTextureClass)) | ||||
|  | ||||
| typedef struct _CallyTexture        CallyTexture; | ||||
| typedef struct _CallyTextureClass   CallyTextureClass; | ||||
| typedef struct _CallyTexturePrivate CallyTexturePrivate; | ||||
|  | ||||
| /** | ||||
|  * CallyTexture: | ||||
|  * | ||||
|  * The <structname>CallyTexture</structname> structure contains only | ||||
|  * private data and should be accessed using the provided API | ||||
|  * | ||||
|  * Since: 1.4 | ||||
|  */ | ||||
| struct _CallyTexture | ||||
| { | ||||
|   /*< private >*/ | ||||
|   CallyActor parent; | ||||
|  | ||||
|   CallyTexturePrivate *priv; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * CallyTextureClass: | ||||
|  * | ||||
|  * The <structname>CallyTextureClass</structname> structure contains | ||||
|  * only private data | ||||
|  * | ||||
|  * Since: 1.4 | ||||
|  */ | ||||
| struct _CallyTextureClass | ||||
| { | ||||
|   /*< private >*/ | ||||
|   CallyActorClass parent_class; | ||||
|  | ||||
|   /* padding for future expansion */ | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType      cally_texture_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| AtkObject *cally_texture_new      (ClutterActor *actor); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CALLY_TEXTURE_H__ */ | ||||
| @@ -38,7 +38,9 @@ | ||||
|  * available any accessible object. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| @@ -142,7 +144,7 @@ cally_util_get_toolkit_name (void) | ||||
| static const gchar * | ||||
| cally_util_get_toolkit_version (void) | ||||
| { | ||||
|   return MUTTER_VERSION; | ||||
|   return CLUTTER_VERSION_S; | ||||
| } | ||||
|  | ||||
| static guint | ||||
| @@ -212,8 +214,6 @@ cally_util_simulate_snooper_install (void) | ||||
|                     G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper); | ||||
|   g_signal_connect (G_OBJECT (stage_manager), "stage-removed", | ||||
|                     G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper); | ||||
|  | ||||
|   g_slist_free (stage_list); | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
| @@ -74,7 +74,7 @@ struct _CallyUtilClass | ||||
|   gpointer _padding_dummy[8]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType cally_util_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| void _cally_util_override_atk_util (void); | ||||
|   | ||||
| @@ -29,7 +29,9 @@ | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_DISABLE_DEPRECATION_WARNINGS | ||||
|  | ||||
| @@ -39,6 +41,7 @@ | ||||
| #include "cally-group.h" | ||||
| #include "cally-stage.h" | ||||
| #include "cally-text.h" | ||||
| #include "cally-texture.h" | ||||
| #include "cally-rectangle.h" | ||||
| #include "cally-clone.h" | ||||
|  | ||||
| @@ -55,6 +58,7 @@ CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_ACTOR, cally_actor, cally_actor_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_GROUP, cally_group, cally_group_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_STAGE, cally_stage, cally_stage_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_TEXT, cally_text, cally_text_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_TEXTURE, cally_texture, cally_texture_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_RECTANGLE, cally_rectangle, cally_rectangle_new) | ||||
| CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_CLONE, cally_clone, cally_clone_new) | ||||
|  | ||||
| @@ -76,6 +80,7 @@ cally_accessibility_init (void) | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_GROUP, cally_group); | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_STAGE, cally_stage); | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_TEXT, cally_text); | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_TEXTURE, cally_texture); | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_RECTANGLE, cally_rectangle); | ||||
|   CALLY_ACTOR_SET_FACTORY (CLUTTER_TYPE_CLONE, cally_clone); | ||||
|  | ||||
|   | ||||
| @@ -32,6 +32,7 @@ | ||||
| #include "cally-root.h" | ||||
| #include "cally-stage.h" | ||||
| #include "cally-text.h" | ||||
| #include "cally-texture.h" | ||||
| #include "cally-util.h" | ||||
|  | ||||
| #undef __CALLY_H_INSIDE__ | ||||
|   | ||||
| @@ -41,7 +41,9 @@ | ||||
|  * #ClutterAction is available since Clutter 1.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-action.h" | ||||
|  | ||||
|   | ||||
| @@ -78,32 +78,32 @@ struct _ClutterActionClass | ||||
|   void (* _clutter_action8) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_action_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| /* ClutterActor API */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_actor_add_action            (ClutterActor  *self, | ||||
|                                                     ClutterAction *action); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_actor_add_action_with_name  (ClutterActor  *self, | ||||
|                                                     const gchar   *name, | ||||
|                                                     ClutterAction *action); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_actor_remove_action         (ClutterActor  *self, | ||||
|                                                     ClutterAction *action); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_actor_remove_action_by_name (ClutterActor  *self, | ||||
|                                                     const gchar   *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterAction *clutter_actor_get_action            (ClutterActor  *self, | ||||
|                                                     const gchar   *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GList *        clutter_actor_get_actions           (ClutterActor  *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_actor_clear_actions         (ClutterActor  *self); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean       clutter_actor_has_actions           (ClutterActor  *self); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -1,12 +0,0 @@ | ||||
| #ifndef __CLUTTER_ACTOR_BOX_PRIVATE_H__ | ||||
| #define __CLUTTER_ACTOR_BOX_PRIVATE_H__ | ||||
|  | ||||
| #include <clutter/clutter-types.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| void _clutter_actor_box_enlarge_for_effects (ClutterActorBox *box); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_ACTOR_BOX_PRIVATE_H__ */ | ||||
| @@ -1,11 +1,12 @@ | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| #include "clutter-types.h" | ||||
| #include "clutter-interval.h" | ||||
| #include "clutter-private.h" | ||||
| #include "clutter-actor-box-private.h" | ||||
|  | ||||
| /** | ||||
|  * clutter_actor_box_new: | ||||
| @@ -340,7 +341,7 @@ clutter_actor_box_contains (const ClutterActorBox *box, | ||||
| /** | ||||
|  * clutter_actor_box_from_vertices: | ||||
|  * @box: a #ClutterActorBox | ||||
|  * @verts: (array fixed-size=4): array of four #graphene_point3d_t | ||||
|  * @verts: (array fixed-size=4): array of four #ClutterVertex | ||||
|  * | ||||
|  * Calculates the bounding box represented by the four vertices; for details | ||||
|  * of the vertex array see clutter_actor_get_abs_allocation_vertices(). | ||||
| @@ -348,8 +349,8 @@ clutter_actor_box_contains (const ClutterActorBox *box, | ||||
|  * Since: 1.0 | ||||
|  */ | ||||
| void | ||||
| clutter_actor_box_from_vertices (ClutterActorBox          *box, | ||||
|                                  const graphene_point3d_t  verts[]) | ||||
| clutter_actor_box_from_vertices (ClutterActorBox     *box, | ||||
|                                  const ClutterVertex  verts[]) | ||||
| { | ||||
|   gfloat x_1, x_2, y_1, y_2; | ||||
|  | ||||
| @@ -543,78 +544,6 @@ clutter_actor_box_set_size (ClutterActorBox *box, | ||||
|   box->y2 = box->y1 + height; | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_actor_box_enlarge_for_effects (ClutterActorBox *box) | ||||
| { | ||||
|   float width, height; | ||||
|  | ||||
|   /* The aim here is that for a given rectangle defined with floating point | ||||
|    * coordinates we want to determine a stable quantized size in pixels | ||||
|    * that doesn't vary due to the original box's sub-pixel position. | ||||
|    * | ||||
|    * The reason this is important is because effects will use this | ||||
|    * API to determine the size of offscreen framebuffers and so for | ||||
|    * a fixed-size object that may be animated accross the screen we | ||||
|    * want to make sure that the stage paint-box has an equally stable | ||||
|    * size so that effects aren't made to continuously re-allocate | ||||
|    * a corresponding fbo. | ||||
|    * | ||||
|    * The other thing we consider is that the calculation of this box is | ||||
|    * subject to floating point precision issues that might be slightly | ||||
|    * different to the precision issues involved with actually painting the | ||||
|    * actor, which might result in painting slightly leaking outside the | ||||
|    * user's calculated paint-volume. For this we simply aim to pad out the | ||||
|    * paint-volume by at least half a pixel all the way around. | ||||
|    */ | ||||
|   width = box->x2 - box->x1; | ||||
|   height = box->y2 - box->y1; | ||||
|   width = CLUTTER_NEARBYINT (width); | ||||
|   height = CLUTTER_NEARBYINT (height); | ||||
|   /* XXX: NB the width/height may now be up to 0.5px too small so we | ||||
|    * must also pad by 0.25px all around to account for this. In total we | ||||
|    * must padd by at least 0.75px around all sides. */ | ||||
|  | ||||
|   /* XXX: The furthest that we can overshoot the bottom right corner by | ||||
|    * here is 1.75px in total if you consider that the 0.75 padding could | ||||
|    * just cross an integer boundary and so ceil will effectively add 1. | ||||
|    */ | ||||
|   box->x2 = ceilf (box->x2 + 0.75); | ||||
|   box->y2 = ceilf (box->y2 + 0.75); | ||||
|  | ||||
|   /* Now we redefine the top-left relative to the bottom right based on the | ||||
|    * rounded width/height determined above + a constant so that the overall | ||||
|    * size of the box will be stable and not dependant on the box's | ||||
|    * position. | ||||
|    * | ||||
|    * Adding 3px to the width/height will ensure we cover the maximum of | ||||
|    * 1.75px padding on the bottom/right and still ensure we have > 0.75px | ||||
|    * padding on the top/left. | ||||
|    */ | ||||
|   box->x1 = box->x2 - width - 3; | ||||
|   box->y1 = box->y2 - height - 3; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_actor_box_scale: | ||||
|  * @box: a #ClutterActorBox | ||||
|  * @scale: scale factor for resizing this box | ||||
|  * | ||||
|  * Rescale the @box by provided @scale factor. | ||||
|  * | ||||
|  * Since: 1.6 | ||||
|  */ | ||||
| void | ||||
| clutter_actor_box_scale (ClutterActorBox *box, | ||||
|                          gfloat           scale) | ||||
| { | ||||
|   g_return_if_fail (box != NULL); | ||||
|  | ||||
|   box->x1 *= scale; | ||||
|   box->x2 *= scale; | ||||
|   box->y1 *= scale; | ||||
|   box->y2 *= scale; | ||||
| } | ||||
|  | ||||
| G_DEFINE_BOXED_TYPE_WITH_CODE (ClutterActorBox, clutter_actor_box, | ||||
|                                clutter_actor_box_copy, | ||||
|                                clutter_actor_box_free, | ||||
|   | ||||
| @@ -41,7 +41,9 @@ | ||||
|  * #ClutterActorMeta is available since Clutter 1.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-actor-meta-private.h" | ||||
|  | ||||
| @@ -51,7 +53,7 @@ | ||||
| struct _ClutterActorMetaPrivate | ||||
| { | ||||
|   ClutterActor *actor; | ||||
|   gulong destroy_id; | ||||
|   guint destroy_id; | ||||
|  | ||||
|   gchar *name; | ||||
|  | ||||
| @@ -91,7 +93,11 @@ clutter_actor_meta_real_set_actor (ClutterActorMeta *meta, | ||||
|   if (meta->priv->actor == actor) | ||||
|     return; | ||||
|  | ||||
|   g_clear_signal_handler (&meta->priv->destroy_id, meta->priv->actor); | ||||
|   if (meta->priv->destroy_id != 0) | ||||
|     { | ||||
|       g_signal_handler_disconnect (meta->priv->actor, meta->priv->destroy_id); | ||||
|       meta->priv->destroy_id = 0; | ||||
|     } | ||||
|  | ||||
|   meta->priv->actor = actor; | ||||
|  | ||||
| @@ -158,8 +164,8 @@ clutter_actor_meta_finalize (GObject *gobject) | ||||
| { | ||||
|   ClutterActorMetaPrivate *priv = CLUTTER_ACTOR_META (gobject)->priv; | ||||
|  | ||||
|   if (priv->actor != NULL) | ||||
|     g_clear_signal_handler (&priv->destroy_id, priv->actor); | ||||
|   if (priv->destroy_id != 0 && priv->actor != NULL) | ||||
|     g_signal_handler_disconnect (priv->actor, priv->destroy_id); | ||||
|  | ||||
|   g_free (priv->name); | ||||
|  | ||||
| @@ -573,7 +579,8 @@ _clutter_meta_group_clear_metas (ClutterMetaGroup *group) | ||||
| { | ||||
|   g_list_foreach (group->meta, (GFunc) _clutter_actor_meta_set_actor, NULL); | ||||
|  | ||||
|   g_list_free_full (group->meta, g_object_unref); | ||||
|   g_list_foreach (group->meta, (GFunc) g_object_unref, NULL); | ||||
|   g_list_free (group->meta); | ||||
|   group->meta = NULL; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -97,21 +97,21 @@ struct _ClutterActorMetaClass | ||||
|   void (* _clutter_meta7) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_actor_meta_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_actor_meta_set_name     (ClutterActorMeta *meta, | ||||
|                                                  const gchar      *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| const gchar *   clutter_actor_meta_get_name     (ClutterActorMeta *meta); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_actor_meta_set_enabled  (ClutterActorMeta *meta, | ||||
|                                                  gboolean          is_enabled); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean        clutter_actor_meta_get_enabled  (ClutterActorMeta *meta); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterActor *  clutter_actor_meta_get_actor    (ClutterActorMeta *meta); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -53,8 +53,7 @@ typedef enum | ||||
|  * Controls some options for how clutter_actor_traverse() iterates | ||||
|  * through the graph. | ||||
|  */ | ||||
| typedef enum | ||||
| { | ||||
| typedef enum { | ||||
|   CLUTTER_ACTOR_TRAVERSE_DEPTH_FIRST   = 1L<<0, | ||||
|   CLUTTER_ACTOR_TRAVERSE_BREADTH_FIRST = 1L<<1 | ||||
| } ClutterActorTraverseFlags; | ||||
| @@ -75,8 +74,7 @@ typedef enum | ||||
|  * the continuing traversal. It may stop traversal completely, just | ||||
|  * skip over children for the current actor or continue as normal. | ||||
|  */ | ||||
| typedef enum | ||||
| { | ||||
| typedef enum { | ||||
|   CLUTTER_ACTOR_TRAVERSE_VISIT_CONTINUE       = 1L<<0, | ||||
|   CLUTTER_ACTOR_TRAVERSE_VISIT_SKIP_CHILDREN  = 1L<<1, | ||||
|   CLUTTER_ACTOR_TRAVERSE_VISIT_BREAK          = 1L<<2 | ||||
| @@ -135,7 +133,7 @@ struct _AnchorCoord | ||||
|     } fraction; | ||||
|  | ||||
|     /* Use when is_fractional == FALSE */ | ||||
|     graphene_point3d_t units; | ||||
|     ClutterVertex units; | ||||
|   } v; | ||||
| }; | ||||
|  | ||||
| @@ -163,7 +161,7 @@ struct _SizeRequest | ||||
| struct _ClutterLayoutInfo | ||||
| { | ||||
|   /* fixed position coordinates */ | ||||
|   graphene_point_t fixed_pos; | ||||
|   ClutterPoint fixed_pos; | ||||
|  | ||||
|   ClutterMargin margin; | ||||
|  | ||||
| @@ -173,8 +171,8 @@ struct _ClutterLayoutInfo | ||||
|   guint x_expand : 1; | ||||
|   guint y_expand : 1; | ||||
|  | ||||
|   graphene_size_t minimum; | ||||
|   graphene_size_t natural; | ||||
|   ClutterSize minimum; | ||||
|   ClutterSize natural; | ||||
| }; | ||||
|  | ||||
| const ClutterLayoutInfo *       _clutter_actor_get_layout_info_or_defaults      (ClutterActor *self); | ||||
| @@ -203,13 +201,13 @@ struct _ClutterTransformInfo | ||||
|   AnchorCoord anchor; | ||||
|  | ||||
|   /* translation */ | ||||
|   graphene_point3d_t translation; | ||||
|   ClutterVertex translation; | ||||
|  | ||||
|   /* z_position */ | ||||
|   gfloat z_position; | ||||
|  | ||||
|   /* transformation center */ | ||||
|   graphene_point_t pivot; | ||||
|   ClutterPoint pivot; | ||||
|   gfloat pivot_z; | ||||
|  | ||||
|   CoglMatrix transform; | ||||
| @@ -242,6 +240,9 @@ ClutterAnimationInfo *          _clutter_actor_get_animation_info | ||||
| ClutterTransition *             _clutter_actor_create_transition                        (ClutterActor *self, | ||||
|                                                                                          GParamSpec   *pspec, | ||||
|                                                                                          ...); | ||||
| ClutterTransition *             _clutter_actor_get_transition                           (ClutterActor *self, | ||||
|                                                                                          GParamSpec   *pspec); | ||||
|  | ||||
| gboolean                        _clutter_actor_foreach_child                            (ClutterActor *self, | ||||
|                                                                                          ClutterForeachCallback callback, | ||||
|                                                                                          gpointer user_data); | ||||
| @@ -274,17 +275,17 @@ void                            _clutter_actor_set_enable_paint_unmapped | ||||
| void                            _clutter_actor_set_has_pointer                          (ClutterActor *self, | ||||
|                                                                                          gboolean      has_pointer); | ||||
|  | ||||
| void                            _clutter_actor_set_has_key_focus                        (ClutterActor *self, | ||||
|                                                                                          gboolean      has_key_focus); | ||||
|  | ||||
| void                            _clutter_actor_queue_redraw_with_clip                   (ClutterActor             *self, | ||||
|                                                                                          ClutterRedrawFlags        flags, | ||||
|                                                                                          const ClutterPaintVolume *clip_volume); | ||||
| void                            _clutter_actor_queue_redraw_full                        (ClutterActor             *self, | ||||
|                                                                                          ClutterRedrawFlags        flags, | ||||
|                                                                                          const ClutterPaintVolume *volume, | ||||
|                                                                                          ClutterEffect            *effect); | ||||
| void                            _clutter_actor_queue_redraw_with_clip                   (ClutterActor       *self, | ||||
|                                                                                          ClutterRedrawFlags  flags, | ||||
|                                                                                          ClutterPaintVolume *clip_volume); | ||||
| void                            _clutter_actor_queue_redraw_full                        (ClutterActor       *self, | ||||
|                                                                                          ClutterRedrawFlags  flags, | ||||
|                                                                                          ClutterPaintVolume *volume, | ||||
|                                                                                          ClutterEffect      *effect); | ||||
|  | ||||
| ClutterPaintVolume *            _clutter_actor_get_queue_redraw_clip                    (ClutterActor       *self); | ||||
| void                            _clutter_actor_set_queue_redraw_clip                    (ClutterActor       *self, | ||||
|                                                                                          ClutterPaintVolume *clip_volume); | ||||
| void                            _clutter_actor_finish_queue_redraw                      (ClutterActor       *self, | ||||
|                                                                                          ClutterPaintVolume *clip); | ||||
|  | ||||
| @@ -297,6 +298,8 @@ const gchar *                   _clutter_actor_get_debug_name | ||||
| void                            _clutter_actor_push_clone_paint                         (void); | ||||
| void                            _clutter_actor_pop_clone_paint                          (void); | ||||
|  | ||||
| guint32                         _clutter_actor_get_pick_id                              (ClutterActor *self); | ||||
|  | ||||
| void                            _clutter_actor_shader_pre_paint                         (ClutterActor *actor, | ||||
|                                                                                          gboolean      repeat); | ||||
| void                            _clutter_actor_shader_post_paint                        (ClutterActor *actor); | ||||
| @@ -313,10 +316,8 @@ void                            _clutter_actor_detach_clone | ||||
| void                            _clutter_actor_queue_redraw_on_clones                   (ClutterActor *actor); | ||||
| void                            _clutter_actor_queue_relayout_on_clones                 (ClutterActor *actor); | ||||
| void                            _clutter_actor_queue_only_relayout                      (ClutterActor *actor); | ||||
| void                            _clutter_actor_queue_update_resource_scale_recursive    (ClutterActor *actor); | ||||
|  | ||||
| gboolean                        _clutter_actor_get_real_resource_scale                  (ClutterActor *actor, | ||||
|                                                                                          float        *resource_scale); | ||||
| CoglFramebuffer *               _clutter_actor_get_active_framebuffer                   (ClutterActor *actor); | ||||
|  | ||||
| ClutterPaintNode *              clutter_actor_create_texture_paint_node                 (ClutterActor *self, | ||||
|                                                                                          CoglTexture  *texture); | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -39,8 +39,6 @@ | ||||
|  | ||||
| #include <clutter/clutter-types.h> | ||||
| #include <clutter/clutter-event.h> | ||||
| #include <clutter/clutter-paint-context.h> | ||||
| #include <clutter/clutter-pick-context.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| @@ -63,7 +61,7 @@ G_BEGIN_DECLS | ||||
|  *   internal state. | ||||
|  */ | ||||
| #define CLUTTER_ACTOR_SET_FLAGS(a,f) \ | ||||
|   CLUTTER_MACRO_DEPRECATED \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24 \ | ||||
|   (((ClutterActor*)(a))->flags |= (f)) | ||||
|  | ||||
| /** | ||||
| @@ -78,23 +76,23 @@ G_BEGIN_DECLS | ||||
|  *   internal state. | ||||
|  */ | ||||
| #define CLUTTER_ACTOR_UNSET_FLAGS(a,f) \ | ||||
|   CLUTTER_MACRO_DEPRECATED \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24 \ | ||||
|   (((ClutterActor*)(a))->flags &= ~(f)) | ||||
|  | ||||
| #define CLUTTER_ACTOR_IS_MAPPED(a) \ | ||||
|   CLUTTER_MACRO_DEPRECATED_FOR ("Deprecated macro. Use clutter_actor_is_mapped instead") \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24_FOR ("Deprecated macro. Use clutter_actor_is_mapped instead") \ | ||||
|   ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_MAPPED) != FALSE) | ||||
|  | ||||
| #define CLUTTER_ACTOR_IS_REALIZED(a) \ | ||||
|   CLUTTER_MACRO_DEPRECATED_FOR ("Deprecated macro. Use clutter_actor_is_realized instead") \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24_FOR ("Deprecated macro. Use clutter_actor_is_realized instead") \ | ||||
|   ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_REALIZED) != FALSE) | ||||
|  | ||||
| #define CLUTTER_ACTOR_IS_VISIBLE(a) \ | ||||
|   CLUTTER_MACRO_DEPRECATED_FOR ("Deprecated macro. Use clutter_actor_is_visible instead") \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24_FOR ("Deprecated macro. Use clutter_actor_is_visible instead") \ | ||||
|   ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_VISIBLE) != FALSE) | ||||
|  | ||||
| #define CLUTTER_ACTOR_IS_REACTIVE(a) \ | ||||
|   CLUTTER_MACRO_DEPRECATED_FOR ("Deprecated macro. Use clutter_actor_get_reactive instead") \ | ||||
|   CLUTTER_MACRO_DEPRECATED_IN_1_24_FOR ("Deprecated macro. Use clutter_actor_get_reactive instead") \ | ||||
|   ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_REACTIVE) != FALSE) | ||||
|  | ||||
| typedef struct _ClutterActorClass    ClutterActorClass; | ||||
| @@ -230,18 +228,16 @@ struct _ClutterActorClass | ||||
|   void (* unrealize)            (ClutterActor          *self); | ||||
|   void (* map)                  (ClutterActor          *self); | ||||
|   void (* unmap)                (ClutterActor          *self); | ||||
|   void (* paint)                (ClutterActor          *self, | ||||
|                                  ClutterPaintContext   *paint_context); | ||||
|   void (* paint)                (ClutterActor          *self); | ||||
|   void (* parent_set)           (ClutterActor          *actor, | ||||
|                                  ClutterActor          *old_parent); | ||||
|  | ||||
|   void (* destroy)              (ClutterActor          *self); | ||||
|   void (* pick)                 (ClutterActor          *actor, | ||||
|                                  ClutterPickContext    *pick_context); | ||||
|                                  const ClutterColor    *color); | ||||
|  | ||||
|   gboolean (* queue_redraw)     (ClutterActor          *actor, | ||||
|                                  ClutterActor          *leaf_that_queued, | ||||
|                                  ClutterPaintVolume    *paint_volume); | ||||
|   void (* queue_redraw)         (ClutterActor          *actor, | ||||
|                                  ClutterActor          *leaf_that_queued); | ||||
|  | ||||
|   /* size negotiation */ | ||||
|   void (* get_preferred_width)  (ClutterActor           *self, | ||||
| @@ -299,11 +295,10 @@ struct _ClutterActorClass | ||||
|  | ||||
|   gboolean (* touch_event)          (ClutterActor         *self, | ||||
|                                      ClutterTouchEvent    *event); | ||||
|   gboolean (* has_accessible)       (ClutterActor         *self); | ||||
|  | ||||
|   /*< private >*/ | ||||
|   /* padding for future expansion */ | ||||
|   gpointer _padding_dummy[25]; | ||||
|   gpointer _padding_dummy[26]; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -327,107 +322,97 @@ struct _ClutterActorIter | ||||
|   gpointer CLUTTER_PRIVATE_FIELD (dummy5); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GType clutter_actor_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_new                               (void); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_flags                         (ClutterActor                *self, | ||||
|                                                                                  ClutterActorFlags            flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_unset_flags                       (ClutterActor                *self, | ||||
|                                                                                  ClutterActorFlags            flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterActorFlags               clutter_actor_get_flags                         (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_show                              (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_hide                              (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_realize                           (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_unrealize                         (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_map                               (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_unmap                             (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_paint                             (ClutterActor                *self, | ||||
|                                                                                  ClutterPaintContext         *paint_context); | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_continue_paint                    (ClutterActor                *self, | ||||
|                                                                                  ClutterPaintContext         *paint_context); | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_pick                              (ClutterActor                *actor, | ||||
|                                                                                  ClutterPickContext          *pick_context); | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_continue_pick                     (ClutterActor                *actor, | ||||
|                                                                                  ClutterPickContext          *pick_context); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_paint                             (ClutterActor                *self); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_continue_paint                    (ClutterActor                *self); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_queue_redraw                      (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_queue_redraw_with_clip            (ClutterActor                *self, | ||||
|                                                                                  const cairo_rectangle_int_t *clip); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_queue_relayout                    (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_destroy                           (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_name                          (ClutterActor                *self, | ||||
|                                                                                  const gchar                 *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| const gchar *                   clutter_actor_get_name                          (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| AtkObject *                     clutter_actor_get_accessible                    (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| gboolean                        clutter_actor_has_accessible                    (ClutterActor                *self); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_24 | ||||
| gboolean                        clutter_actor_is_visible                        (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_24 | ||||
| gboolean                        clutter_actor_is_mapped                         (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_24 | ||||
| gboolean                        clutter_actor_is_realized                       (ClutterActor                *self); | ||||
|  | ||||
| /* Size negotiation */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_request_mode                  (ClutterActor                *self, | ||||
|                                                                                  ClutterRequestMode           mode); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterRequestMode              clutter_actor_get_request_mode                  (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_preferred_width               (ClutterActor                *self, | ||||
|                                                                                  gfloat                       for_height, | ||||
|                                                                                  gfloat                      *min_width_p, | ||||
|                                                                                  gfloat                      *natural_width_p); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_preferred_height              (ClutterActor                *self, | ||||
|                                                                                  gfloat                       for_width, | ||||
|                                                                                  gfloat                      *min_height_p, | ||||
|                                                                                  gfloat                      *natural_height_p); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_preferred_size                (ClutterActor                *self, | ||||
|                                                                                  gfloat                      *min_width_p, | ||||
|                                                                                  gfloat                      *min_height_p, | ||||
|                                                                                  gfloat                      *natural_width_p, | ||||
|                                                                                  gfloat                      *natural_height_p); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_allocate                          (ClutterActor                *self, | ||||
|                                                                                  const ClutterActorBox       *box, | ||||
|                                                                                  ClutterAllocationFlags       flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_allocate_preferred_size           (ClutterActor                *self, | ||||
|                                                                                  ClutterAllocationFlags       flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_allocate_available_size           (ClutterActor                *self, | ||||
|                                                                                  gfloat                       x, | ||||
|                                                                                  gfloat                       y, | ||||
|                                                                                  gfloat                       available_width, | ||||
|                                                                                  gfloat                       available_height, | ||||
|                                                                                  ClutterAllocationFlags       flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_allocate_align_fill               (ClutterActor                *self, | ||||
|                                                                                  const ClutterActorBox       *box, | ||||
|                                                                                  gdouble                      x_align, | ||||
| @@ -435,460 +420,450 @@ void                            clutter_actor_allocate_align_fill | ||||
|                                                                                  gboolean                     x_fill, | ||||
|                                                                                  gboolean                     y_fill, | ||||
|                                                                                  ClutterAllocationFlags       flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_allocation                    (ClutterActor                *self, | ||||
|                                                                                  const ClutterActorBox       *box, | ||||
|                                                                                  ClutterAllocationFlags       flags); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_allocation_box                (ClutterActor                *self, | ||||
|                                                                                  ClutterActorBox             *box); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_allocation_vertices           (ClutterActor                *self, | ||||
|                                                                                  ClutterActor                *ancestor, | ||||
|                                                                                  graphene_point3d_t          *verts); | ||||
| CLUTTER_EXPORT | ||||
|                                                                                  ClutterVertex                verts[]); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_has_allocation                    (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_size                          (ClutterActor                *self, | ||||
|                                                                                  gfloat                       width, | ||||
|                                                                                  gfloat                       height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_size                          (ClutterActor                *self, | ||||
|                                                                                  gfloat                      *width, | ||||
|                                                                                  gfloat                      *height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_position                      (ClutterActor                *self, | ||||
|                                                                                  gfloat                       x, | ||||
|                                                                                  gfloat                       y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_position                      (ClutterActor                *self, | ||||
|                                                                                  gfloat                      *x, | ||||
|                                                                                  gfloat                      *y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_get_fixed_position_set            (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_fixed_position_set            (ClutterActor                *self, | ||||
|                                                                                  gboolean                     is_set); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_move_by                           (ClutterActor                *self, | ||||
|                                                                                  gfloat                       dx, | ||||
|                                                                                  gfloat                       dy); | ||||
|  | ||||
| /* Actor geometry */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gfloat                          clutter_actor_get_width                         (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gfloat                          clutter_actor_get_height                        (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_width                         (ClutterActor                *self, | ||||
|                                                                                  gfloat                       width); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_height                        (ClutterActor                *self, | ||||
|                                                                                  gfloat                       height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gfloat                          clutter_actor_get_x                             (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gfloat                          clutter_actor_get_y                             (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_x                             (ClutterActor                *self, | ||||
|                                                                                  gfloat                       x); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_y                             (ClutterActor                *self, | ||||
|                                                                                  gfloat                       y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_z_position                    (ClutterActor                *self, | ||||
|                                                                                  gfloat                       z_position); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gfloat                          clutter_actor_get_z_position                    (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_layout_manager                (ClutterActor                *self, | ||||
|                                                                                  ClutterLayoutManager        *manager); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterLayoutManager *          clutter_actor_get_layout_manager                (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_x_align                       (ClutterActor                *self, | ||||
|                                                                                  ClutterActorAlign            x_align); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActorAlign               clutter_actor_get_x_align                       (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_y_align                       (ClutterActor                *self, | ||||
|                                                                                  ClutterActorAlign            y_align); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActorAlign               clutter_actor_get_y_align                       (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_margin_top                    (ClutterActor                *self, | ||||
|                                                                                  gfloat                       margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gfloat                          clutter_actor_get_margin_top                    (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_margin_bottom                 (ClutterActor                *self, | ||||
|                                                                                  gfloat                       margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gfloat                          clutter_actor_get_margin_bottom                 (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_margin_left                   (ClutterActor                *self, | ||||
|                                                                                  gfloat                       margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gfloat                          clutter_actor_get_margin_left                   (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_margin_right                  (ClutterActor                *self, | ||||
|                                                                                  gfloat                       margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gfloat                          clutter_actor_get_margin_right                  (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_margin                        (ClutterActor                *self, | ||||
|                                                                                  const ClutterMargin         *margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_get_margin                        (ClutterActor                *self, | ||||
|                                                                                  ClutterMargin               *margin); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_x_expand                      (ClutterActor                *self, | ||||
|                                                                                  gboolean                     expand); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gboolean                        clutter_actor_get_x_expand                      (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_y_expand                      (ClutterActor                *self, | ||||
|                                                                                  gboolean                     expand); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gboolean                        clutter_actor_get_y_expand                      (ClutterActor                *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gboolean                        clutter_actor_needs_expand                      (ClutterActor                *self, | ||||
|                                                                                  ClutterOrientation           orientation); | ||||
|  | ||||
| /* Paint */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_clip                          (ClutterActor                *self, | ||||
|                                                                                  gfloat                       xoff, | ||||
|                                                                                  gfloat                       yoff, | ||||
|                                                                                  gfloat                       width, | ||||
|                                                                                  gfloat                       height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_remove_clip                       (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_has_clip                          (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_clip                          (ClutterActor               *self, | ||||
|                                                                                  gfloat                     *xoff, | ||||
|                                                                                  gfloat                     *yoff, | ||||
|                                                                                  gfloat                     *width, | ||||
|                                                                                  gfloat                     *height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_clip_to_allocation            (ClutterActor               *self, | ||||
|                                                                                  gboolean                    clip_set); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_get_clip_to_allocation            (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_opacity                       (ClutterActor               *self, | ||||
|                                                                                  guint8                      opacity); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| guint8                          clutter_actor_get_opacity                       (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| guint8                          clutter_actor_get_paint_opacity                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_get_paint_visibility              (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| void                            clutter_actor_set_offscreen_redirect            (ClutterActor               *self, | ||||
|                                                                                  ClutterOffscreenRedirect    redirect); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| ClutterOffscreenRedirect        clutter_actor_get_offscreen_redirect            (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_should_pick_paint                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_is_in_clone_paint                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_get_paint_box                     (ClutterActor               *self, | ||||
|                                                                                  ClutterActorBox            *box); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| gboolean                        clutter_actor_get_resource_scale                (ClutterActor *self, | ||||
|                                                                                  gfloat       *resource_scale); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| gboolean                        clutter_actor_has_overlaps                      (ClutterActor               *self); | ||||
|  | ||||
| /* Content */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_content                       (ClutterActor               *self, | ||||
|                                                                                  ClutterContent             *content); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterContent *                clutter_actor_get_content                       (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_content_gravity               (ClutterActor               *self, | ||||
|                                                                                  ClutterContentGravity       gravity); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterContentGravity           clutter_actor_get_content_gravity               (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_content_scaling_filters       (ClutterActor               *self, | ||||
|                                                                                  ClutterScalingFilter        min_filter, | ||||
|                                                                                  ClutterScalingFilter        mag_filter); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_get_content_scaling_filters       (ClutterActor               *self, | ||||
|                                                                                  ClutterScalingFilter       *min_filter, | ||||
|                                                                                  ClutterScalingFilter       *mag_filter); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_content_repeat                (ClutterActor               *self, | ||||
|                                                                                  ClutterContentRepeat        repeat); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| ClutterContentRepeat            clutter_actor_get_content_repeat                (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_get_content_box                   (ClutterActor               *self, | ||||
|                                                                                  ClutterActorBox            *box); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_background_color              (ClutterActor               *self, | ||||
|                                                                                  const ClutterColor         *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_get_background_color              (ClutterActor               *self, | ||||
|                                                                                  ClutterColor               *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_6 | ||||
| const ClutterPaintVolume *      clutter_actor_get_paint_volume                  (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_6 | ||||
| const ClutterPaintVolume *      clutter_actor_get_transformed_paint_volume      (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *relative_to_ancestor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| const ClutterPaintVolume *      clutter_actor_get_default_paint_volume          (ClutterActor               *self); | ||||
|  | ||||
| /* Events */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_reactive                      (ClutterActor               *actor, | ||||
|                                                                                  gboolean                    reactive); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_get_reactive                      (ClutterActor               *actor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_has_key_focus                     (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_grab_key_focus                    (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_event                             (ClutterActor               *actor, | ||||
|                                                                                  const ClutterEvent         *event, | ||||
|                                                                                  gboolean                    capture); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_has_pointer                       (ClutterActor               *self); | ||||
|  | ||||
| /* Text */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| PangoContext *                  clutter_actor_get_pango_context                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| PangoContext *                  clutter_actor_create_pango_context              (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| PangoLayout *                   clutter_actor_create_pango_layout               (ClutterActor               *self, | ||||
|                                                                                  const gchar                *text); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_text_direction                (ClutterActor               *self, | ||||
|                                                                                  ClutterTextDirection        text_dir); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterTextDirection            clutter_actor_get_text_direction                (ClutterActor               *self); | ||||
|  | ||||
| /* Actor hierarchy */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_add_child                         (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_insert_child_at_index             (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  gint                        index_); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_insert_child_above                (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  ClutterActor               *sibling); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_insert_child_below                (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  ClutterActor               *sibling); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_replace_child                     (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *old_child, | ||||
|                                                                                  ClutterActor               *new_child); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_remove_child                      (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_remove_all_children               (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_destroy_all_children              (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| GList *                         clutter_actor_get_children                      (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gint                            clutter_actor_get_n_children                    (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_get_child_at_index                (ClutterActor               *self, | ||||
|                                                                                  gint                        index_); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_get_previous_sibling              (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_get_next_sibling                  (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_get_first_child                   (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterActor *                  clutter_actor_get_last_child                    (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterActor *                  clutter_actor_get_parent                        (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gboolean                        clutter_actor_contains                          (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *descendant); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterActor*                   clutter_actor_get_stage                         (ClutterActor               *actor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_child_below_sibling           (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  ClutterActor               *sibling); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_child_above_sibling           (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  ClutterActor               *sibling); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_child_at_index                (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *child, | ||||
|                                                                                  gint                        index_); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_iter_init                         (ClutterActorIter           *iter, | ||||
|                                                                                  ClutterActor               *root); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean                        clutter_actor_iter_next                         (ClutterActorIter           *iter, | ||||
|                                                                                  ClutterActor              **child); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean                        clutter_actor_iter_prev                         (ClutterActorIter           *iter, | ||||
|                                                                                  ClutterActor              **child); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_iter_remove                       (ClutterActorIter           *iter); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_iter_destroy                      (ClutterActorIter           *iter); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gboolean                        clutter_actor_iter_is_valid                     (const ClutterActorIter     *iter); | ||||
|  | ||||
| /* Transformations */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_is_rotated                        (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_is_scaled                         (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_pivot_point                   (ClutterActor               *self, | ||||
|                                                                                  gfloat                      pivot_x, | ||||
|                                                                                  gfloat                      pivot_y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_get_pivot_point                   (ClutterActor               *self, | ||||
|                                                                                  gfloat                     *pivot_x, | ||||
|                                                                                  gfloat                     *pivot_y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_pivot_point_z                 (ClutterActor               *self, | ||||
|                                                                                  gfloat                      pivot_z); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gfloat                          clutter_actor_get_pivot_point_z                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_rotation_angle                (ClutterActor               *self, | ||||
|                                                                                  ClutterRotateAxis           axis, | ||||
|                                                                                  gdouble                     angle); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gdouble                         clutter_actor_get_rotation_angle                (ClutterActor               *self, | ||||
|                                                                                  ClutterRotateAxis           axis); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_set_scale                         (ClutterActor               *self, | ||||
|                                                                                  gdouble                     scale_x, | ||||
|                                                                                  gdouble                     scale_y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_scale                         (ClutterActor               *self, | ||||
|                                                                                  gdouble                    *scale_x, | ||||
|                                                                                  gdouble                    *scale_y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_scale_z                       (ClutterActor               *self, | ||||
|                                                                                  gdouble                     scale_z); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| gdouble                         clutter_actor_get_scale_z                       (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_translation                   (ClutterActor               *self, | ||||
|                                                                                  gfloat                      translate_x, | ||||
|                                                                                  gfloat                      translate_y, | ||||
|                                                                                  gfloat                      translate_z); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_get_translation                   (ClutterActor               *self, | ||||
|                                                                                  gfloat                     *translate_x, | ||||
|                                                                                  gfloat                     *translate_y, | ||||
|                                                                                  gfloat                     *translate_z); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_transform                     (ClutterActor               *self, | ||||
|                                                                                  const ClutterMatrix        *transform); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_get_transform                     (ClutterActor               *self, | ||||
|                                                                                  ClutterMatrix              *transform); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_set_child_transform               (ClutterActor               *self, | ||||
|                                                                                  const ClutterMatrix        *transform); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                            clutter_actor_get_child_transform               (ClutterActor               *self, | ||||
|                                                                                  ClutterMatrix              *transform); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_transformed_position          (ClutterActor               *self, | ||||
|                                                                                  gfloat                     *x, | ||||
|                                                                                  gfloat                     *y); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_transformed_size              (ClutterActor               *self, | ||||
|                                                                                  gfloat                     *width, | ||||
|                                                                                  gfloat                     *height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                        clutter_actor_transform_stage_point             (ClutterActor               *self, | ||||
|                                                                                  gfloat                      x, | ||||
|                                                                                  gfloat                      y, | ||||
|                                                                                  gfloat                     *x_out, | ||||
|                                                                                  gfloat                     *y_out); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_get_abs_allocation_vertices       (ClutterActor               *self, | ||||
|                                                                                  graphene_point3d_t         *verts); | ||||
| CLUTTER_EXPORT | ||||
|                                                                                  ClutterVertex               verts[]); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_apply_transform_to_point          (ClutterActor               *self, | ||||
|                                                                                  const graphene_point3d_t   *point, | ||||
|                                                                                  graphene_point3d_t         *vertex); | ||||
| CLUTTER_EXPORT | ||||
|                                                                                  const ClutterVertex        *point, | ||||
|                                                                                  ClutterVertex              *vertex); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_actor_apply_relative_transform_to_point (ClutterActor               *self, | ||||
|                                                                                  ClutterActor               *ancestor, | ||||
|                                                                                  const graphene_point3d_t   *point, | ||||
|                                                                                  graphene_point3d_t         *vertex); | ||||
|                                                                                  const ClutterVertex        *point, | ||||
|                                                                                  ClutterVertex              *vertex); | ||||
|  | ||||
| /* Implicit animations */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_save_easing_state                 (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_restore_easing_state              (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_easing_mode                   (ClutterActor               *self, | ||||
|                                                                                  ClutterAnimationMode        mode); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterAnimationMode            clutter_actor_get_easing_mode                   (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_easing_duration               (ClutterActor               *self, | ||||
|                                                                                  guint                       msecs); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| guint                           clutter_actor_get_easing_duration               (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_set_easing_delay                  (ClutterActor               *self, | ||||
|                                                                                  guint                       msecs); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| guint                           clutter_actor_get_easing_delay                  (ClutterActor               *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterTransition *             clutter_actor_get_transition                    (ClutterActor               *self, | ||||
|                                                                                  const char                 *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_add_transition                    (ClutterActor               *self, | ||||
|                                                                                  const char                 *name, | ||||
|                                                                                  ClutterTransition          *transition); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_remove_transition                 (ClutterActor               *self, | ||||
|                                                                                  const char                 *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void                            clutter_actor_remove_all_transitions            (ClutterActor               *self); | ||||
|  | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_16 | ||||
| gboolean                        clutter_actor_has_mapped_clones                 (ClutterActor *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_22 | ||||
| void                            clutter_actor_set_opacity_override              (ClutterActor               *self, | ||||
|                                                                                  gint                        opacity); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_22 | ||||
| gint                            clutter_actor_get_opacity_override              (ClutterActor               *self); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_inhibit_culling                   (ClutterActor               *actor); | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_actor_uninhibit_culling                 (ClutterActor               *actor); | ||||
|  | ||||
| /** | ||||
|  * ClutterActorCreateChildFunc: | ||||
|  * @item: (type GObject): the item in the model | ||||
| @@ -908,24 +883,19 @@ void                            clutter_actor_uninhibit_culling | ||||
| typedef ClutterActor * (* ClutterActorCreateChildFunc) (gpointer item, | ||||
|                                                         gpointer user_data); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_24 | ||||
| void                            clutter_actor_bind_model                        (ClutterActor               *self, | ||||
|                                                                                  GListModel                 *model, | ||||
|                                                                                  ClutterActorCreateChildFunc create_child_func, | ||||
|                                                                                  gpointer                    user_data, | ||||
|                                                                                  GDestroyNotify              notify); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_24 | ||||
| void                            clutter_actor_bind_model_with_properties        (ClutterActor               *self, | ||||
|                                                                                  GListModel                 *model, | ||||
|                                                                                  GType                       child_type, | ||||
|                                                                                  const char                 *first_model_property, | ||||
|                                                                                  ...); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| void clutter_actor_pick_box (ClutterActor          *self, | ||||
|                              ClutterPickContext    *pick_context, | ||||
|                              const ClutterActorBox *box); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_ACTOR_H__ */ | ||||
|   | ||||
| @@ -34,7 +34,9 @@ | ||||
|  * #ClutterAlignConstraint is available since Clutter 1.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-align-constraint.h" | ||||
|  | ||||
|   | ||||
| @@ -48,28 +48,28 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterAlignConstraint          ClutterAlignConstraint; | ||||
| typedef struct _ClutterAlignConstraintClass     ClutterAlignConstraintClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_align_constraint_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterConstraint *clutter_align_constraint_new            (ClutterActor           *source, | ||||
|                                                             ClutterAlignAxis        axis, | ||||
|                                                             gfloat                  factor); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_align_constraint_set_source     (ClutterAlignConstraint *align, | ||||
|                                                             ClutterActor           *source); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterActor *     clutter_align_constraint_get_source     (ClutterAlignConstraint *align); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_align_constraint_set_align_axis (ClutterAlignConstraint *align, | ||||
|                                                             ClutterAlignAxis        axis); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterAlignAxis   clutter_align_constraint_get_align_axis (ClutterAlignConstraint *align); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_align_constraint_set_factor     (ClutterAlignConstraint *align, | ||||
|                                                             gfloat                  factor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gfloat             clutter_align_constraint_get_factor     (ClutterAlignConstraint *align); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -30,7 +30,7 @@ | ||||
|  * to control how a #ClutterAnimation will animate a property. | ||||
|  * | ||||
|  * Each #ClutterAnimatable should implement the | ||||
|  * #ClutterAnimatableInterface.interpolate_property() virtual function of the | ||||
|  * #ClutterAnimatableIface.interpolate_property() virtual function of the | ||||
|  * interface to compute the animation state between two values of an interval | ||||
|  * depending on a progress factor, expressed as a floating point value. | ||||
|  * | ||||
| @@ -45,7 +45,9 @@ | ||||
|  * #ClutterAnimatable is available since Clutter 1.0 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_DISABLE_DEPRECATION_WARNINGS | ||||
|  | ||||
| @@ -54,8 +56,10 @@ | ||||
| #include "clutter-debug.h" | ||||
| #include "clutter-private.h" | ||||
|  | ||||
| #include "deprecated/clutter-animatable.h" | ||||
| #include "deprecated/clutter-animation.h" | ||||
|  | ||||
| typedef ClutterAnimatableIface  ClutterAnimatableInterface; | ||||
| G_DEFINE_INTERFACE (ClutterAnimatable, clutter_animatable, G_TYPE_OBJECT); | ||||
|  | ||||
| static void | ||||
| @@ -63,6 +67,80 @@ clutter_animatable_default_init (ClutterAnimatableInterface *iface) | ||||
| { | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_animatable_animate_property: | ||||
|  * @animatable: a #ClutterAnimatable | ||||
|  * @animation: a #ClutterAnimation | ||||
|  * @property_name: the name of the animated property | ||||
|  * @initial_value: the initial value of the animation interval | ||||
|  * @final_value: the final value of the animation interval | ||||
|  * @progress: the progress factor | ||||
|  * @value: return location for the animation value | ||||
|  * | ||||
|  * Calls the animate_property() virtual function for @animatable. | ||||
|  * | ||||
|  * The @initial_value and @final_value #GValue<!-- -->s must contain | ||||
|  * the same type; @value must have been initialized to the same | ||||
|  * type of @initial_value and @final_value. | ||||
|  * | ||||
|  * All implementation of the #ClutterAnimatable interface must | ||||
|  * implement this function. | ||||
|  * | ||||
|  * Return value: %TRUE if the value has been validated and can | ||||
|  *   be applied to the #ClutterAnimatable, and %FALSE otherwise | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  * | ||||
|  * Deprecated: 1.8: Use clutter_animatable_interpolate_value() | ||||
|  *   instead | ||||
|  */ | ||||
| gboolean | ||||
| clutter_animatable_animate_property (ClutterAnimatable *animatable, | ||||
|                                      ClutterAnimation  *animation, | ||||
|                                      const gchar       *property_name, | ||||
|                                      const GValue      *initial_value, | ||||
|                                      const GValue      *final_value, | ||||
|                                      gdouble            progress, | ||||
|                                      GValue            *value) | ||||
| { | ||||
|   ClutterAnimatableIface *iface; | ||||
|   gboolean res; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_ANIMATABLE (animatable), FALSE); | ||||
|   g_return_val_if_fail (CLUTTER_IS_ANIMATION (animation), FALSE); | ||||
|   g_return_val_if_fail (property_name != NULL, FALSE); | ||||
|   g_return_val_if_fail (initial_value != NULL && final_value != NULL, FALSE); | ||||
|   g_return_val_if_fail (G_VALUE_TYPE (initial_value) != G_TYPE_INVALID, FALSE); | ||||
|   g_return_val_if_fail (G_VALUE_TYPE (final_value) != G_TYPE_INVALID, FALSE); | ||||
|   g_return_val_if_fail (value != NULL, FALSE); | ||||
|   g_return_val_if_fail (G_VALUE_TYPE (value) == G_VALUE_TYPE (initial_value) && | ||||
|                         G_VALUE_TYPE (value) == G_VALUE_TYPE (final_value), | ||||
|                         FALSE); | ||||
|  | ||||
|   iface = CLUTTER_ANIMATABLE_GET_IFACE (animatable); | ||||
|   if (iface->animate_property == NULL) | ||||
|     { | ||||
|       ClutterInterval *interval; | ||||
|  | ||||
|       interval = clutter_animation_get_interval (animation, property_name); | ||||
|       if (interval == NULL) | ||||
|         return FALSE; | ||||
|  | ||||
|       res = clutter_animatable_interpolate_value (animatable, property_name, | ||||
|                                                   interval, | ||||
|                                                   progress, | ||||
|                                                   value); | ||||
|     } | ||||
|   else | ||||
|     res = iface->animate_property (animatable, animation, | ||||
|                                    property_name, | ||||
|                                    initial_value, final_value, | ||||
|                                    progress, | ||||
|                                    value); | ||||
|  | ||||
|   return res; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_animatable_find_property: | ||||
|  * @animatable: a #ClutterAnimatable | ||||
| @@ -79,7 +157,7 @@ GParamSpec * | ||||
| clutter_animatable_find_property (ClutterAnimatable *animatable, | ||||
|                                   const gchar       *property_name) | ||||
| { | ||||
|   ClutterAnimatableInterface *iface; | ||||
|   ClutterAnimatableIface *iface; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_ANIMATABLE (animatable), NULL); | ||||
|   g_return_val_if_fail (property_name != NULL, NULL); | ||||
| @@ -109,7 +187,7 @@ clutter_animatable_get_initial_state (ClutterAnimatable *animatable, | ||||
|                                       const gchar       *property_name, | ||||
|                                       GValue            *value) | ||||
| { | ||||
|   ClutterAnimatableInterface *iface; | ||||
|   ClutterAnimatableIface *iface; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_ANIMATABLE (animatable)); | ||||
|   g_return_if_fail (property_name != NULL); | ||||
| @@ -138,7 +216,7 @@ clutter_animatable_set_final_state (ClutterAnimatable *animatable, | ||||
|                                     const gchar       *property_name, | ||||
|                                     const GValue      *value) | ||||
| { | ||||
|   ClutterAnimatableInterface *iface; | ||||
|   ClutterAnimatableIface *iface; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_ANIMATABLE (animatable)); | ||||
|   g_return_if_fail (property_name != NULL); | ||||
| @@ -184,7 +262,7 @@ clutter_animatable_interpolate_value (ClutterAnimatable *animatable, | ||||
|                                       gdouble            progress, | ||||
|                                       GValue            *value) | ||||
| { | ||||
|   ClutterAnimatableInterface *iface; | ||||
|   ClutterAnimatableIface *iface; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_ANIMATABLE (animatable), FALSE); | ||||
|   g_return_val_if_fail (property_name != NULL, FALSE); | ||||
|   | ||||
| @@ -33,15 +33,24 @@ | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define CLUTTER_TYPE_ANIMATABLE (clutter_animatable_get_type ()) | ||||
| #define CLUTTER_TYPE_ANIMATABLE                 (clutter_animatable_get_type ()) | ||||
| #define CLUTTER_ANIMATABLE(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_ANIMATABLE, ClutterAnimatable)) | ||||
| #define CLUTTER_IS_ANIMATABLE(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_ANIMATABLE)) | ||||
| #define CLUTTER_ANIMATABLE_GET_IFACE(obj)       (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CLUTTER_TYPE_ANIMATABLE, ClutterAnimatableIface)) | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| G_DECLARE_INTERFACE (ClutterAnimatable, clutter_animatable, | ||||
|                      CLUTTER, ANIMATABLE, | ||||
|                      GObject) | ||||
| typedef struct _ClutterAnimatableIface          ClutterAnimatableIface; | ||||
|  | ||||
| /** | ||||
|  * ClutterAnimatableInterface: | ||||
|  * ClutterAnimatable: | ||||
|  * | ||||
|  * #ClutterAnimatable is an opaque structure whose members cannot be directly | ||||
|  * accessed | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * ClutterAnimatableIface: | ||||
|  * @animate_property: virtual function for custom interpolation of a | ||||
|  *   property. This virtual function is deprecated | ||||
|  * @find_property: virtual function for retrieving the #GParamSpec of | ||||
| @@ -58,7 +67,7 @@ G_DECLARE_INTERFACE (ClutterAnimatable, clutter_animatable, | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  */ | ||||
| struct _ClutterAnimatableInterface | ||||
| struct _ClutterAnimatableIface | ||||
| { | ||||
|   /*< private >*/ | ||||
|   GTypeInterface parent_iface; | ||||
| @@ -86,18 +95,21 @@ struct _ClutterAnimatableInterface | ||||
|                                      GValue            *value); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GType clutter_animatable_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GParamSpec *clutter_animatable_find_property     (ClutterAnimatable *animatable, | ||||
|                                                   const gchar       *property_name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void        clutter_animatable_get_initial_state (ClutterAnimatable *animatable, | ||||
|                                                   const gchar       *property_name, | ||||
|                                                   GValue            *value); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void        clutter_animatable_set_final_state   (ClutterAnimatable *animatable, | ||||
|                                                   const gchar       *property_name, | ||||
|                                                   const GValue      *value); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| gboolean    clutter_animatable_interpolate_value (ClutterAnimatable *animatable, | ||||
|                                                   const gchar       *property_name, | ||||
|                                                   ClutterInterval   *interval, | ||||
|   | ||||
| @@ -34,6 +34,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterAction, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActor, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorMeta, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterAlignConstraint, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterAnimatable, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterBackend, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterBindConstraint, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterBindingPool, g_object_unref) | ||||
| @@ -48,8 +49,10 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterClone, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColorizeEffect, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterConstraint, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterContainer, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterContent, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterDeformEffect, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterDesaturateEffect, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterDeviceManager, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterDragAction, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterDropAction, g_object_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterEffect, g_object_unref) | ||||
| @@ -90,10 +93,13 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColor, clutter_color_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterMargin, clutter_margin_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterMatrix, clutter_matrix_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintContext, clutter_paint_context_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintNode, clutter_paint_node_unref) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintVolume, clutter_paint_volume_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPathNode, clutter_path_node_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPoint, clutter_point_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterRect, clutter_rect_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterSize, clutter_size_free) | ||||
| G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterVertex, clutter_vertex_free) | ||||
|  | ||||
| #endif /* __GI_SCANNER__ */ | ||||
|  | ||||
|   | ||||
| @@ -23,9 +23,11 @@ | ||||
| #define __CLUTTER_BACKEND_PRIVATE_H__ | ||||
|  | ||||
| #include <clutter/clutter-backend.h> | ||||
| #include <clutter/clutter-seat.h> | ||||
| #include <clutter/clutter-device-manager.h> | ||||
| #include <clutter/clutter-stage-window.h> | ||||
|  | ||||
| #include "clutter-event-translator.h" | ||||
|  | ||||
| #define CLUTTER_BACKEND_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) | ||||
| #define CLUTTER_IS_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND)) | ||||
| #define CLUTTER_BACKEND_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) | ||||
| @@ -46,6 +48,8 @@ struct _ClutterBackend | ||||
|  | ||||
|   CoglOnscreen *dummy_onscreen; | ||||
|  | ||||
|   ClutterDeviceManager *device_manager; | ||||
|  | ||||
|   cairo_font_options_t *font_options; | ||||
|  | ||||
|   gchar *font_name; | ||||
| @@ -53,9 +57,7 @@ struct _ClutterBackend | ||||
|   gfloat units_per_em; | ||||
|   gint32 units_serial; | ||||
|  | ||||
|   ClutterStageWindow *stage_window; | ||||
|  | ||||
|   ClutterInputMethod *input_method; | ||||
|   GList *event_translators; | ||||
| }; | ||||
|  | ||||
| struct _ClutterBackendClass | ||||
| @@ -84,12 +86,19 @@ struct _ClutterBackendClass | ||||
|                                                 GError         **error); | ||||
|   gboolean              (* create_context)     (ClutterBackend  *backend, | ||||
|                                                 GError         **error); | ||||
|   ClutterDeviceManager *(* get_device_manager) (ClutterBackend  *backend); | ||||
|  | ||||
|   void                  (* copy_event_data)    (ClutterBackend     *backend, | ||||
|                                                 const ClutterEvent *src, | ||||
|                                                 ClutterEvent       *dest); | ||||
|   void                  (* free_event_data)    (ClutterBackend     *backend, | ||||
|                                                 ClutterEvent       *event); | ||||
|  | ||||
|   gboolean              (* translate_event)    (ClutterBackend     *backend, | ||||
|                                                 gpointer            native, | ||||
|                                                 ClutterEvent       *event); | ||||
|  | ||||
|   ClutterSeat *         (* get_default_seat)   (ClutterBackend *backend); | ||||
|   PangoDirection        (* get_keymap_direction) (ClutterBackend   *backend); | ||||
|  | ||||
|   /* signals */ | ||||
|   void (* resolution_changed) (ClutterBackend *backend); | ||||
| @@ -118,21 +127,31 @@ void                    _clutter_backend_copy_event_data                (Clutter | ||||
|                                                                          ClutterEvent           *dest); | ||||
| void                    _clutter_backend_free_event_data                (ClutterBackend         *backend, | ||||
|                                                                          ClutterEvent           *event); | ||||
| CLUTTER_EXPORT | ||||
| gboolean                _clutter_backend_translate_event                (ClutterBackend         *backend, | ||||
|                                                                          gpointer                native, | ||||
|                                                                          ClutterEvent           *event); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| void                    _clutter_backend_add_event_translator           (ClutterBackend         *backend, | ||||
|                                                                          ClutterEventTranslator *translator); | ||||
|  | ||||
| void                    _clutter_backend_remove_event_translator        (ClutterBackend         *backend, | ||||
|                                                                          ClutterEventTranslator *translator); | ||||
|  | ||||
| ClutterFeatureFlags     _clutter_backend_get_features                   (ClutterBackend         *backend); | ||||
|  | ||||
| gfloat                  _clutter_backend_get_units_per_em               (ClutterBackend         *backend, | ||||
|                                                                          PangoFontDescription   *font_desc); | ||||
| gint32                  _clutter_backend_get_units_serial               (ClutterBackend         *backend); | ||||
|  | ||||
| PangoDirection          _clutter_backend_get_keymap_direction           (ClutterBackend         *backend); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| void                    _clutter_backend_reset_cogl_framebuffer         (ClutterBackend         *backend); | ||||
|  | ||||
| void                    clutter_set_allowed_drivers                     (const char             *drivers); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| ClutterStageWindow *    clutter_backend_get_stage_window                (ClutterBackend         *backend); | ||||
| void                    clutter_try_set_windowing_backend               (const char             *drivers); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -38,7 +38,9 @@ | ||||
|  * #ClutterBackend is available since Clutter 0.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
|  | ||||
| @@ -51,6 +53,11 @@ | ||||
| #include "clutter-stage-manager-private.h" | ||||
| #include "clutter-stage-private.h" | ||||
| #include "clutter-stage-window.h" | ||||
| #include "clutter-version.h" | ||||
| #include "clutter-device-manager-private.h" | ||||
|  | ||||
| #define CLUTTER_DISABLE_DEPRECATION_WARNINGS | ||||
| #include "deprecated/clutter-backend.h" | ||||
|  | ||||
| #ifdef CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT | ||||
| #include "wayland/clutter-wayland-compositor.h" | ||||
| @@ -61,6 +68,9 @@ | ||||
| #ifdef CLUTTER_INPUT_X11 | ||||
| #include "x11/clutter-backend-x11.h" | ||||
| #endif | ||||
| #ifdef CLUTTER_INPUT_EVDEV | ||||
| #include "evdev/clutter-device-manager-evdev.h" | ||||
| #endif | ||||
| #ifdef CLUTTER_WINDOWING_EGL | ||||
| #include "egl/clutter-backend-eglnative.h" | ||||
| #endif | ||||
| @@ -100,12 +110,10 @@ clutter_backend_dispose (GObject *gobject) | ||||
|   /* clear the events still in the queue of the main context */ | ||||
|   _clutter_clear_events_queue (); | ||||
|  | ||||
|   /* remove all event translators */ | ||||
|   g_clear_pointer (&backend->event_translators, g_list_free); | ||||
|  | ||||
|   g_clear_pointer (&backend->dummy_onscreen, cogl_object_unref); | ||||
|   if (backend->stage_window) | ||||
|     { | ||||
|       g_object_remove_weak_pointer (G_OBJECT (backend->stage_window), | ||||
|                                     (gpointer *) &backend->stage_window); | ||||
|     } | ||||
|  | ||||
|   G_OBJECT_CLASS (clutter_backend_parent_class)->dispose (gobject); | ||||
| } | ||||
| @@ -119,7 +127,6 @@ clutter_backend_finalize (GObject *gobject) | ||||
|  | ||||
|   g_free (backend->font_name); | ||||
|   clutter_backend_set_font_options (backend, NULL); | ||||
|   g_clear_object (&backend->input_method); | ||||
|  | ||||
|   G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject); | ||||
| } | ||||
| @@ -395,7 +402,7 @@ clutter_backend_real_create_context (ClutterBackend  *backend, | ||||
|       else | ||||
|         g_set_error_literal (error, CLUTTER_INIT_ERROR, | ||||
|                              CLUTTER_INIT_ERROR_BACKEND, | ||||
|                              "Unable to initialize the Clutter backend: no available drivers found."); | ||||
|                             _("Unable to initialize the Clutter backend: no available drivers found.")); | ||||
|  | ||||
|       return FALSE; | ||||
|     } | ||||
| @@ -425,7 +432,7 @@ clutter_backend_real_get_features (ClutterBackend *backend) | ||||
|   if (cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_THROTTLE)) | ||||
|     { | ||||
|       CLUTTER_NOTE (BACKEND, "Cogl supports swap buffers throttling"); | ||||
|       flags |= CLUTTER_FEATURE_SWAP_THROTTLE; | ||||
|       flags |= CLUTTER_FEATURE_SYNC_TO_VBLANK; | ||||
|     } | ||||
|   else | ||||
|     CLUTTER_NOTE (BACKEND, "Cogl doesn't support swap buffers throttling"); | ||||
| @@ -524,7 +531,80 @@ _clutter_create_backend (void) | ||||
| static void | ||||
| clutter_backend_real_init_events (ClutterBackend *backend) | ||||
| { | ||||
|   g_error ("Unknown input backend"); | ||||
|   const char *input_backend = NULL; | ||||
|  | ||||
|   input_backend = g_getenv ("CLUTTER_INPUT_BACKEND"); | ||||
|   if (input_backend != NULL) | ||||
|     input_backend = g_intern_string (input_backend); | ||||
|  | ||||
| #ifdef CLUTTER_INPUT_X11 | ||||
|   if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) && | ||||
|       (input_backend == NULL || input_backend == I_(CLUTTER_INPUT_X11))) | ||||
|     { | ||||
|       _clutter_backend_x11_events_init (backend); | ||||
|     } | ||||
|   else | ||||
| #endif | ||||
| #ifdef CLUTTER_INPUT_EVDEV | ||||
|   /* Evdev can be used regardless of the windowing system */ | ||||
|   if ((input_backend != NULL && strcmp (input_backend, CLUTTER_INPUT_EVDEV) == 0) | ||||
| #ifdef CLUTTER_WINDOWING_EGL | ||||
|       /* but we do want to always use it for EGL native */ | ||||
|       || clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL) | ||||
| #endif | ||||
|       ) | ||||
|     { | ||||
|       _clutter_events_evdev_init (backend); | ||||
|     } | ||||
|   else | ||||
| #endif | ||||
|   if (input_backend != NULL) | ||||
|     { | ||||
|       if (input_backend != I_(CLUTTER_INPUT_NULL)) | ||||
|         g_error ("Unrecognized input backend '%s'", input_backend); | ||||
|     } | ||||
|   else | ||||
|     g_error ("Unknown input backend"); | ||||
| } | ||||
|  | ||||
| static ClutterDeviceManager * | ||||
| clutter_backend_real_get_device_manager (ClutterBackend *backend) | ||||
| { | ||||
|   if (G_UNLIKELY (backend->device_manager == NULL)) | ||||
|     { | ||||
|       g_critical ("No device manager available, expect broken input"); | ||||
|       return NULL; | ||||
|     } | ||||
|  | ||||
|   return backend->device_manager; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_backend_real_translate_event (ClutterBackend *backend, | ||||
|                                       gpointer        native, | ||||
|                                       ClutterEvent   *event) | ||||
| { | ||||
|   GList *l; | ||||
|  | ||||
|   for (l = backend->event_translators; | ||||
|        l != NULL; | ||||
|        l = l->next) | ||||
|     { | ||||
|       ClutterEventTranslator *translator = l->data; | ||||
|       ClutterTranslateReturn retval; | ||||
|  | ||||
|       retval = _clutter_event_translator_translate_event (translator, | ||||
|                                                           native, | ||||
|                                                           event); | ||||
|  | ||||
|       if (retval == CLUTTER_TRANSLATE_QUEUE) | ||||
|         return TRUE; | ||||
|  | ||||
|       if (retval == CLUTTER_TRANSLATE_REMOVE) | ||||
|         return FALSE; | ||||
|     } | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -549,7 +629,8 @@ clutter_backend_class_init (ClutterBackendClass *klass) | ||||
|                   G_TYPE_FROM_CLASS (klass), | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterBackendClass, resolution_changed), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__VOID, | ||||
|                   G_TYPE_NONE, 0); | ||||
|  | ||||
|   /** | ||||
| @@ -566,7 +647,8 @@ clutter_backend_class_init (ClutterBackendClass *klass) | ||||
|                   G_TYPE_FROM_CLASS (klass), | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterBackendClass, font_changed), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__VOID, | ||||
|                   G_TYPE_NONE, 0); | ||||
|  | ||||
|   /** | ||||
| @@ -583,13 +665,16 @@ clutter_backend_class_init (ClutterBackendClass *klass) | ||||
|                   G_TYPE_FROM_CLASS (klass), | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterBackendClass, settings_changed), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__VOID, | ||||
|                   G_TYPE_NONE, 0); | ||||
|  | ||||
|   klass->resolution_changed = clutter_backend_real_resolution_changed; | ||||
|   klass->font_changed = clutter_backend_real_font_changed; | ||||
|  | ||||
|   klass->init_events = clutter_backend_real_init_events; | ||||
|   klass->get_device_manager = clutter_backend_real_get_device_manager; | ||||
|   klass->translate_event = clutter_backend_real_translate_event; | ||||
|   klass->create_context = clutter_backend_real_create_context; | ||||
|   klass->get_features = clutter_backend_real_get_features; | ||||
| } | ||||
| @@ -600,7 +685,7 @@ clutter_backend_init (ClutterBackend *self) | ||||
|   self->units_per_em = -1.0; | ||||
|   self->units_serial = 1; | ||||
|  | ||||
|   self->dummy_onscreen = NULL; | ||||
|   self->dummy_onscreen = COGL_INVALID_HANDLE; | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -668,10 +753,6 @@ _clutter_backend_create_stage (ClutterBackend  *backend, | ||||
|  | ||||
|   g_assert (CLUTTER_IS_STAGE_WINDOW (stage_window)); | ||||
|  | ||||
|   backend->stage_window = stage_window; | ||||
|   g_object_add_weak_pointer (G_OBJECT (backend->stage_window), | ||||
|                              (gpointer *) &backend->stage_window); | ||||
|  | ||||
|   return stage_window; | ||||
| } | ||||
|  | ||||
| @@ -756,24 +837,37 @@ _clutter_backend_copy_event_data (ClutterBackend     *backend, | ||||
|                                   const ClutterEvent *src, | ||||
|                                   ClutterEvent       *dest) | ||||
| { | ||||
|   ClutterSeatClass *seat_class; | ||||
|   ClutterSeat *seat; | ||||
|   ClutterEventExtenderInterface *iface; | ||||
|   ClutterBackendClass *klass; | ||||
|  | ||||
|   seat = clutter_backend_get_default_seat (backend); | ||||
|   seat_class = CLUTTER_SEAT_GET_CLASS (seat); | ||||
|   seat_class->copy_event_data (seat, src, dest); | ||||
|   klass = CLUTTER_BACKEND_GET_CLASS (backend); | ||||
|   if (CLUTTER_IS_EVENT_EXTENDER (backend->device_manager)) | ||||
|     { | ||||
|       iface = CLUTTER_EVENT_EXTENDER_GET_IFACE (backend->device_manager); | ||||
|       iface->copy_event_data (CLUTTER_EVENT_EXTENDER (backend->device_manager), | ||||
|                               src, dest); | ||||
|     } | ||||
|   else if (klass->copy_event_data != NULL) | ||||
|     klass->copy_event_data (backend, src, dest); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_backend_free_event_data (ClutterBackend *backend, | ||||
|                                   ClutterEvent   *event) | ||||
| { | ||||
|   ClutterSeatClass *seat_class; | ||||
|   ClutterSeat *seat; | ||||
|   ClutterEventExtenderInterface *iface; | ||||
|   ClutterBackendClass *klass; | ||||
|  | ||||
|   seat = clutter_backend_get_default_seat (backend); | ||||
|   seat_class = CLUTTER_SEAT_GET_CLASS (seat); | ||||
|   seat_class->free_event_data (seat, event); | ||||
|   klass = CLUTTER_BACKEND_GET_CLASS (backend); | ||||
|  | ||||
|   if (CLUTTER_IS_EVENT_EXTENDER (backend->device_manager)) | ||||
|     { | ||||
|       iface = CLUTTER_EVENT_EXTENDER_GET_IFACE (backend->device_manager); | ||||
|       iface->free_event_data (CLUTTER_EVENT_EXTENDER (backend->device_manager), | ||||
|                               event); | ||||
|     } | ||||
|   else if (klass->free_event_data != NULL) | ||||
|     klass->free_event_data (backend, event); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -798,6 +892,129 @@ clutter_get_default_backend (void) | ||||
|   return clutter_context->backend; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_set_double_click_time: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * @msec: milliseconds between two button press events | ||||
|  * | ||||
|  * Sets the maximum time between two button press events, used to | ||||
|  * verify whether it's a double click event or not. | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:double-click-time instead | ||||
|  */ | ||||
| void | ||||
| clutter_backend_set_double_click_time (ClutterBackend *backend, | ||||
|                                        guint           msec) | ||||
| { | ||||
|   ClutterSettings *settings = clutter_settings_get_default (); | ||||
|  | ||||
|   g_object_set (settings, "double-click-time", msec, NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_double_click_time: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * | ||||
|  * Gets the maximum time between two button press events, as set | ||||
|  * by clutter_backend_set_double_click_time(). | ||||
|  * | ||||
|  * Return value: a time in milliseconds | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:double-click-time instead | ||||
|  */ | ||||
| guint | ||||
| clutter_backend_get_double_click_time (ClutterBackend *backend) | ||||
| { | ||||
|   ClutterSettings *settings = clutter_settings_get_default (); | ||||
|   gint retval; | ||||
|  | ||||
|   g_object_get (settings, "double-click-time", &retval, NULL); | ||||
|  | ||||
|   return retval; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_set_double_click_distance: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * @distance: a distance, in pixels | ||||
|  * | ||||
|  * Sets the maximum distance used to verify a double click event. | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:double-click-distance instead | ||||
|  */ | ||||
| void | ||||
| clutter_backend_set_double_click_distance (ClutterBackend *backend, | ||||
|                                            guint           distance) | ||||
| { | ||||
|   ClutterSettings *settings = clutter_settings_get_default (); | ||||
|  | ||||
|   g_object_set (settings, "double-click-distance", distance, NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_double_click_distance: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * | ||||
|  * Retrieves the distance used to verify a double click event | ||||
|  * | ||||
|  * Return value: a distance, in pixels. | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:double-click-distance instead | ||||
|  */ | ||||
| guint | ||||
| clutter_backend_get_double_click_distance (ClutterBackend *backend) | ||||
| { | ||||
|   ClutterSettings *settings = clutter_settings_get_default (); | ||||
|   gint retval; | ||||
|  | ||||
|   g_object_get (settings, "double-click-distance", &retval, NULL); | ||||
|  | ||||
|   return retval; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_set_resolution: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * @dpi: the resolution in "dots per inch" (Physical inches aren't | ||||
|  *   actually involved; the terminology is conventional). | ||||
|  * | ||||
|  * Sets the resolution for font handling on the screen. This is a | ||||
|  * scale factor between points specified in a #PangoFontDescription | ||||
|  * and cairo units. The default value is 96, meaning that a 10 point | ||||
|  * font will be 13 units high. (10 * 96. / 72. = 13.3). | ||||
|  * | ||||
|  * Applications should never need to call this function. | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:font-dpi instead | ||||
|  */ | ||||
| void | ||||
| clutter_backend_set_resolution (ClutterBackend *backend, | ||||
|                                 gdouble         dpi) | ||||
| { | ||||
|   ClutterSettings *settings; | ||||
|   gint resolution; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_BACKEND (backend)); | ||||
|  | ||||
|   if (dpi < 0) | ||||
|     resolution = -1; | ||||
|   else | ||||
|     resolution = dpi * 1024; | ||||
|  | ||||
|   settings = clutter_settings_get_default (); | ||||
|   g_object_set (settings, "font-dpi", resolution, NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_resolution: | ||||
|  * @backend: a #ClutterBackend | ||||
| @@ -903,6 +1120,61 @@ clutter_backend_get_font_options (ClutterBackend *backend) | ||||
|   return backend->font_options; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_set_font_name: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * @font_name: the name of the font | ||||
|  * | ||||
|  * Sets the default font to be used by Clutter. The @font_name string | ||||
|  * must either be %NULL, which means that the font name from the | ||||
|  * default #ClutterBackend will be used; or be something that can | ||||
|  * be parsed by the pango_font_description_from_string() function. | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:font-name instead | ||||
|  */ | ||||
| void | ||||
| clutter_backend_set_font_name (ClutterBackend *backend, | ||||
|                                const gchar    *font_name) | ||||
| { | ||||
|   ClutterSettings *settings = clutter_settings_get_default (); | ||||
|  | ||||
|   g_object_set (settings, "font-name", font_name, NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_font_name: | ||||
|  * @backend: a #ClutterBackend | ||||
|  * | ||||
|  * Retrieves the default font name as set by | ||||
|  * clutter_backend_set_font_name(). | ||||
|  * | ||||
|  * Return value: the font name for the backend. The returned string is | ||||
|  *   owned by the #ClutterBackend and should never be modified or freed | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  * | ||||
|  * Deprecated: 1.4: Use #ClutterSettings:font-name instead | ||||
|  */ | ||||
| const gchar * | ||||
| clutter_backend_get_font_name (ClutterBackend *backend) | ||||
| { | ||||
|   ClutterSettings *settings; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_BACKEND (backend), NULL); | ||||
|  | ||||
|   settings = clutter_settings_get_default (); | ||||
|  | ||||
|   /* XXX yuck. but we return a const pointer, so we need to | ||||
|    * store it in the backend | ||||
|    */ | ||||
|   g_free (backend->font_name); | ||||
|   g_object_get (settings, "font-name", &backend->font_name, NULL); | ||||
|  | ||||
|   return backend->font_name; | ||||
| } | ||||
|  | ||||
| gint32 | ||||
| _clutter_backend_get_units_serial (ClutterBackend *backend) | ||||
| { | ||||
| @@ -919,6 +1191,28 @@ _clutter_backend_translate_event (ClutterBackend *backend, | ||||
|                                                                event); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_backend_add_event_translator (ClutterBackend         *backend, | ||||
|                                        ClutterEventTranslator *translator) | ||||
| { | ||||
|   if (g_list_find (backend->event_translators, translator) != NULL) | ||||
|     return; | ||||
|  | ||||
|   backend->event_translators = | ||||
|     g_list_prepend (backend->event_translators, translator); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_backend_remove_event_translator (ClutterBackend         *backend, | ||||
|                                           ClutterEventTranslator *translator) | ||||
| { | ||||
|   if (g_list_find (backend->event_translators, translator) == NULL) | ||||
|     return; | ||||
|  | ||||
|   backend->event_translators = | ||||
|     g_list_remove (backend->event_translators, translator); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_cogl_context: (skip) | ||||
|  * @backend: a #ClutterBackend | ||||
| @@ -970,6 +1264,94 @@ clutter_wayland_set_compositor_display (void *display) | ||||
| } | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * clutter_set_windowing_backend: | ||||
|  * @backend_type: a comma separated list of windowing backends | ||||
|  * | ||||
|  * Restricts Clutter to only use the specified backend or list of backends. | ||||
|  * | ||||
|  * You can use one of the `CLUTTER_WINDOWING_*` symbols, e.g. | ||||
|  * | ||||
|  * |[<!-- language="C" --> | ||||
|  *   clutter_set_windowing_backend (CLUTTER_WINDOWING_X11); | ||||
|  * ]| | ||||
|  * | ||||
|  * Will force Clutter to use the X11 windowing and input backend, and terminate | ||||
|  * if the X11 backend could not be initialized successfully. | ||||
|  * | ||||
|  * Since Clutter 1.26, you can also use a comma-separated list of windowing | ||||
|  * system backends to provide a fallback in case backends are not available or | ||||
|  * enabled, e.g.: | ||||
|  * | ||||
|  * |[<!-- language="C" --> | ||||
|  *   clutter_set_windowing_backend ("gdk,wayland,x11"); | ||||
|  * ]| | ||||
|  * | ||||
|  * Will make Clutter test for the GDK, Wayland, and X11 backends in that order. | ||||
|  * | ||||
|  * You can use the `*` special value to ask Clutter to use the internally | ||||
|  * defined list of backends. For instance: | ||||
|  * | ||||
|  * |[<!-- language="C" --> | ||||
|  *   clutter_set_windowing_backend ("x11,wayland,*"); | ||||
|  * ]| | ||||
|  * | ||||
|  * Will make Clutter test the X11 and Wayland backends, and then fall back | ||||
|  * to the internal list of available backends. | ||||
|  * | ||||
|  * This function must be called before the first API call to Clutter, including | ||||
|  * clutter_get_option_context() | ||||
|  * | ||||
|  * Since: 1.16 | ||||
|  */ | ||||
| void | ||||
| clutter_set_windowing_backend (const char *backend_type) | ||||
| { | ||||
|   g_return_if_fail (backend_type != NULL); | ||||
|  | ||||
|   allowed_backends = g_strdup (backend_type); | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_try_set_windowing_backend (const char *backend_type) | ||||
| { | ||||
|   if (allowed_backends == NULL) | ||||
|     clutter_set_windowing_backend (backend_type); | ||||
| } | ||||
|  | ||||
| PangoDirection | ||||
| _clutter_backend_get_keymap_direction (ClutterBackend *backend) | ||||
| { | ||||
|   ClutterBackendClass *klass; | ||||
|  | ||||
|   klass = CLUTTER_BACKEND_GET_CLASS (backend); | ||||
|   if (klass->get_keymap_direction != NULL) | ||||
|     return klass->get_keymap_direction (backend); | ||||
|  | ||||
|   return PANGO_DIRECTION_NEUTRAL; | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_backend_reset_cogl_framebuffer (ClutterBackend *backend) | ||||
| { | ||||
|   if (backend->dummy_onscreen == COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       CoglError *internal_error = NULL; | ||||
|  | ||||
|       backend->dummy_onscreen = cogl_onscreen_new (backend->cogl_context, 1, 1); | ||||
|  | ||||
|       if (!cogl_framebuffer_allocate (COGL_FRAMEBUFFER (backend->dummy_onscreen), | ||||
|                                       &internal_error)) | ||||
|         { | ||||
|           g_critical ("Unable to create dummy onscreen: %s", internal_error->message); | ||||
|           cogl_error_free (internal_error); | ||||
|           return; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   cogl_set_framebuffer (COGL_FRAMEBUFFER (backend->dummy_onscreen)); | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_set_allowed_drivers (const char *drivers) | ||||
| { | ||||
| @@ -981,53 +1363,3 @@ clutter_set_allowed_drivers (const char *drivers) | ||||
|  | ||||
|   allowed_drivers = g_strdup (drivers); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_input_method: | ||||
|  * @backend: the #CLutterBackend | ||||
|  * | ||||
|  * Returns the input method used by Clutter | ||||
|  * | ||||
|  * Returns: (transfer none): the input method | ||||
|  **/ | ||||
| ClutterInputMethod * | ||||
| clutter_backend_get_input_method (ClutterBackend *backend) | ||||
| { | ||||
|   return backend->input_method; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_set_input_method: | ||||
|  * @backend: the #ClutterBackend | ||||
|  * @method: the input method | ||||
|  * | ||||
|  * Sets the input method to be used by Clutter | ||||
|  **/ | ||||
| void | ||||
| clutter_backend_set_input_method (ClutterBackend     *backend, | ||||
|                                   ClutterInputMethod *method) | ||||
| { | ||||
|   g_set_object (&backend->input_method, method); | ||||
| } | ||||
|  | ||||
| ClutterStageWindow * | ||||
| clutter_backend_get_stage_window (ClutterBackend *backend) | ||||
| { | ||||
|   return backend->stage_window; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_backend_get_default_seat: | ||||
|  * @backend: the #ClutterBackend | ||||
|  * | ||||
|  * Returns the default seat | ||||
|  * | ||||
|  * Returns: (transfer none): the default seat | ||||
|  **/ | ||||
| ClutterSeat * | ||||
| clutter_backend_get_default_seat (ClutterBackend *backend) | ||||
| { | ||||
|   g_return_val_if_fail (CLUTTER_IS_BACKEND (backend), NULL); | ||||
|  | ||||
|   return CLUTTER_BACKEND_GET_CLASS (backend)->get_default_seat (backend); | ||||
| } | ||||
|   | ||||
| @@ -34,9 +34,7 @@ | ||||
| #include <cogl/cogl.h> | ||||
|  | ||||
| #include <clutter/clutter-config.h> | ||||
| #include <clutter/clutter-keymap.h> | ||||
| #include <clutter/clutter-types.h> | ||||
| #include <clutter/clutter-seat.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| @@ -55,33 +53,27 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterBackend          ClutterBackend; | ||||
| typedef struct _ClutterBackendClass     ClutterBackendClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GType clutter_backend_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterBackend *                clutter_get_default_backend             (void); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_16 | ||||
| void                            clutter_set_windowing_backend           (const char *backend_type); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gdouble                         clutter_backend_get_resolution          (ClutterBackend             *backend); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                            clutter_backend_set_font_options        (ClutterBackend             *backend, | ||||
|                                                                          const cairo_font_options_t *options); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| const cairo_font_options_t *    clutter_backend_get_font_options        (ClutterBackend             *backend); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| CoglContext *                   clutter_backend_get_cogl_context        (ClutterBackend             *backend); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| ClutterInputMethod *            clutter_backend_get_input_method        (ClutterBackend             *backend); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| void                            clutter_backend_set_input_method        (ClutterBackend             *backend, | ||||
|                                                                          ClutterInputMethod         *method); | ||||
| CLUTTER_EXPORT | ||||
| ClutterSeat *                   clutter_backend_get_default_seat        (ClutterBackend             *backend); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_BACKEND_H__ */ | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -324,7 +324,7 @@ _clutter_bezier_init (ClutterBezier *b, | ||||
|    * triggers, we need to change those two functions a bit. | ||||
|    */ | ||||
|   if (b->ax > 0x1fff || b->bx > 0x1fff || b->cx > 0x1fff) | ||||
|     g_warning ("Calculated coefficients will result in multiplication " | ||||
|     g_warning ("Calculated coefficents will result in multiplication " | ||||
|                "overflow in clutter_bezier_t2x and clutter_bezier_t2y."); | ||||
|  | ||||
|   /* | ||||
|   | ||||
| @@ -36,7 +36,7 @@ G_BEGIN_DECLS | ||||
|  | ||||
| typedef struct _ClutterBezier ClutterBezier; | ||||
|  | ||||
| ClutterBezier *_clutter_bezier_new (void); | ||||
| ClutterBezier *_clutter_bezier_new (); | ||||
|  | ||||
| void           _clutter_bezier_free (ClutterBezier * b); | ||||
|  | ||||
|   | ||||
| @@ -43,16 +43,18 @@ | ||||
|  * #ClutterBinLayout is available since Clutter 1.2 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| #define CLUTTER_DISABLE_DEPRECATION_WARNINGS | ||||
| #include "deprecated/clutter-container.h" | ||||
| #include "deprecated/clutter-bin-layout.h" | ||||
|  | ||||
| #include "clutter-actor-private.h" | ||||
| #include "clutter-animatable.h" | ||||
| #include "clutter-bin-layout.h" | ||||
| #include "clutter-child-meta.h" | ||||
| #include "clutter-debug.h" | ||||
| #include "clutter-enum-types.h" | ||||
| @@ -698,3 +700,187 @@ clutter_bin_layout_new (ClutterBinAlignment x_align, | ||||
|                        "y-align", y_align, | ||||
|                        NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_bin_layout_set_alignment: | ||||
|  * @self: a #ClutterBinLayout | ||||
|  * @child: (allow-none): a child of @container | ||||
|  * @x_align: the horizontal alignment policy to be used for the @child | ||||
|  *   inside @container | ||||
|  * @y_align: the vertical aligment policy to be used on the @child | ||||
|  *   inside @container | ||||
|  * | ||||
|  * Sets the horizontal and vertical alignment policies to be applied | ||||
|  * to a @child of @self | ||||
|  * | ||||
|  * If @child is %NULL then the @x_align and @y_align values will | ||||
|  * be set as the default alignment policies | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  * | ||||
|  * Deprecated: 1.12: Use the #ClutterActor:x-align and | ||||
|  *   #ClutterActor:y-align properties of #ClutterActor instead. | ||||
|  */ | ||||
| void | ||||
| clutter_bin_layout_set_alignment (ClutterBinLayout    *self, | ||||
|                                   ClutterActor        *child, | ||||
|                                   ClutterBinAlignment  x_align, | ||||
|                                   ClutterBinAlignment  y_align) | ||||
| { | ||||
|   ClutterBinLayoutPrivate *priv; | ||||
|   ClutterLayoutManager *manager; | ||||
|   ClutterLayoutMeta *meta; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_BIN_LAYOUT (self)); | ||||
|   g_return_if_fail (child == NULL || CLUTTER_IS_ACTOR (child)); | ||||
|  | ||||
|   priv = self->priv; | ||||
|  | ||||
|   if (priv->container == NULL) | ||||
|     { | ||||
|       if (child == NULL) | ||||
|         { | ||||
|           set_x_align (self, x_align); | ||||
|           set_y_align (self, y_align); | ||||
|         } | ||||
|       else | ||||
|         g_warning ("The layout of type '%s' must be associated to " | ||||
|                    "a ClutterContainer before setting the alignment " | ||||
|                    "on its children", | ||||
|                    G_OBJECT_TYPE_NAME (self)); | ||||
|  | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   manager = CLUTTER_LAYOUT_MANAGER (self); | ||||
|   meta = clutter_layout_manager_get_child_meta (manager, | ||||
|                                                 priv->container, | ||||
|                                                 child); | ||||
|   g_assert (CLUTTER_IS_BIN_LAYER (meta)); | ||||
|  | ||||
|   set_layer_x_align (CLUTTER_BIN_LAYER (meta), x_align); | ||||
|   set_layer_y_align (CLUTTER_BIN_LAYER (meta), y_align); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_bin_layout_get_alignment: | ||||
|  * @self: a #ClutterBinLayout | ||||
|  * @child: (allow-none): a child of @container | ||||
|  * @x_align: (out) (allow-none): return location for the horizontal | ||||
|  *   alignment policy | ||||
|  * @y_align: (out) (allow-none): return location for the vertical | ||||
|  *   alignment policy | ||||
|  * | ||||
|  * Retrieves the horizontal and vertical alignment policies for | ||||
|  * a child of @self | ||||
|  * | ||||
|  * If @child is %NULL the default alignment policies will be returned | ||||
|  * instead | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  * | ||||
|  * Deprecated: 1.12: Use the #ClutterActor:x-align and the | ||||
|  *   #ClutterActor:y-align properties of #ClutterActor instead. | ||||
|  */ | ||||
| void | ||||
| clutter_bin_layout_get_alignment (ClutterBinLayout    *self, | ||||
|                                   ClutterActor        *child, | ||||
|                                   ClutterBinAlignment *x_align, | ||||
|                                   ClutterBinAlignment *y_align) | ||||
| { | ||||
|   ClutterBinLayoutPrivate *priv; | ||||
|   ClutterLayoutManager *manager; | ||||
|   ClutterLayoutMeta *meta; | ||||
|   ClutterBinLayer *layer; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_BIN_LAYOUT (self)); | ||||
|  | ||||
|   priv = self->priv; | ||||
|  | ||||
|   if (priv->container == NULL) | ||||
|     { | ||||
|       if (child == NULL) | ||||
|         { | ||||
|           if (x_align) | ||||
|             *x_align = priv->x_align; | ||||
|  | ||||
|           if (y_align) | ||||
|             *y_align = priv->y_align; | ||||
|         } | ||||
|       else | ||||
|         g_warning ("The layout of type '%s' must be associated to " | ||||
|                    "a ClutterContainer before getting the alignment " | ||||
|                    "of its children", | ||||
|                    G_OBJECT_TYPE_NAME (self)); | ||||
|  | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   manager = CLUTTER_LAYOUT_MANAGER (self); | ||||
|   meta = clutter_layout_manager_get_child_meta (manager, | ||||
|                                                 priv->container, | ||||
|                                                 child); | ||||
|   g_assert (CLUTTER_IS_BIN_LAYER (meta)); | ||||
|  | ||||
|   layer = CLUTTER_BIN_LAYER (meta); | ||||
|  | ||||
|   if (x_align) | ||||
|     *x_align = layer->x_align; | ||||
|  | ||||
|   if (y_align) | ||||
|     *y_align = layer->y_align; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_bin_layout_add: | ||||
|  * @self: a #ClutterBinLayout | ||||
|  * @child: a #ClutterActor | ||||
|  * @x_align: horizontal alignment policy for @child | ||||
|  * @y_align: vertical alignment policy for @child | ||||
|  * | ||||
|  * Adds a #ClutterActor to the container using @self and | ||||
|  * sets the alignment policies for it | ||||
|  * | ||||
|  * This function is equivalent to clutter_container_add_actor() | ||||
|  * and clutter_layout_manager_child_set_property() but it does not | ||||
|  * require a pointer to the #ClutterContainer associated to the | ||||
|  * #ClutterBinLayout | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  * | ||||
|  * Deprecated: 1.12: Use clutter_actor_add_child() instead. | ||||
|  */ | ||||
| void | ||||
| clutter_bin_layout_add (ClutterBinLayout    *self, | ||||
|                         ClutterActor        *child, | ||||
|                         ClutterBinAlignment  x_align, | ||||
|                         ClutterBinAlignment  y_align) | ||||
| { | ||||
|   ClutterBinLayoutPrivate *priv; | ||||
|   ClutterLayoutManager *manager; | ||||
|   ClutterLayoutMeta *meta; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_BIN_LAYOUT (self)); | ||||
|   g_return_if_fail (CLUTTER_IS_ACTOR (child)); | ||||
|  | ||||
|   priv = self->priv; | ||||
|  | ||||
|   if (priv->container == NULL) | ||||
|     { | ||||
|       g_warning ("The layout of type '%s' must be associated to " | ||||
|                  "a ClutterContainer before adding children", | ||||
|                  G_OBJECT_TYPE_NAME (self)); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   clutter_container_add_actor (priv->container, child); | ||||
|  | ||||
|   manager = CLUTTER_LAYOUT_MANAGER (self); | ||||
|   meta = clutter_layout_manager_get_child_meta (manager, | ||||
|                                                 priv->container, | ||||
|                                                 child); | ||||
|   g_assert (CLUTTER_IS_BIN_LAYER (meta)); | ||||
|  | ||||
|   set_layer_x_align (CLUTTER_BIN_LAYER (meta), x_align); | ||||
|   set_layer_y_align (CLUTTER_BIN_LAYER (meta), y_align); | ||||
| } | ||||
|   | ||||
| @@ -74,10 +74,10 @@ struct _ClutterBinLayoutClass | ||||
|   ClutterLayoutManagerClass parent_class; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| GType clutter_bin_layout_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| ClutterLayoutManager *  clutter_bin_layout_new  (ClutterBinAlignment x_align, | ||||
|                                                  ClutterBinAlignment y_align); | ||||
|  | ||||
|   | ||||
| @@ -80,7 +80,9 @@ | ||||
|  * #ClutterBindConstraint is available since Clutter 1.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| @@ -144,55 +146,6 @@ source_destroyed (ClutterActor          *actor, | ||||
|   bind->source = NULL; | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_bind_constraint_update_preferred_size (ClutterConstraint  *constraint, | ||||
|                                                ClutterActor       *actor, | ||||
|                                                ClutterOrientation  direction, | ||||
|                                                float               for_size, | ||||
|                                                float              *minimum_size, | ||||
|                                                float              *natural_size) | ||||
| { | ||||
|   ClutterBindConstraint *bind = CLUTTER_BIND_CONSTRAINT (constraint); | ||||
|   float source_min, source_nat; | ||||
|  | ||||
|   if (bind->source == NULL) | ||||
|     return; | ||||
|  | ||||
|   /* only these bindings affect the preferred size */ | ||||
|   if (!(bind->coordinate == CLUTTER_BIND_WIDTH || | ||||
|         bind->coordinate == CLUTTER_BIND_HEIGHT || | ||||
|         bind->coordinate == CLUTTER_BIND_SIZE || | ||||
|         bind->coordinate == CLUTTER_BIND_ALL)) | ||||
|     return; | ||||
|  | ||||
|   switch (direction) | ||||
|     { | ||||
|     case CLUTTER_ORIENTATION_HORIZONTAL: | ||||
|       if (bind->coordinate != CLUTTER_BIND_HEIGHT) | ||||
|         { | ||||
|           clutter_actor_get_preferred_width (bind->source, for_size, | ||||
|                                              &source_min, | ||||
|                                              &source_nat); | ||||
|  | ||||
|           *minimum_size = source_min; | ||||
|           *natural_size = source_nat; | ||||
|         } | ||||
|       break; | ||||
|  | ||||
|     case CLUTTER_ORIENTATION_VERTICAL: | ||||
|       if (bind->coordinate != CLUTTER_BIND_WIDTH) | ||||
|         { | ||||
|           clutter_actor_get_preferred_height (bind->source, for_size, | ||||
|                                               &source_min, | ||||
|                                               &source_nat); | ||||
|  | ||||
|           *minimum_size = source_min; | ||||
|           *natural_size = source_nat; | ||||
|         } | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_bind_constraint_update_allocation (ClutterConstraint *constraint, | ||||
|                                            ClutterActor      *actor, | ||||
| @@ -201,9 +154,7 @@ clutter_bind_constraint_update_allocation (ClutterConstraint *constraint, | ||||
|   ClutterBindConstraint *bind = CLUTTER_BIND_CONSTRAINT (constraint); | ||||
|   gfloat source_width, source_height; | ||||
|   gfloat actor_width, actor_height; | ||||
|   graphene_point3d_t source_position; | ||||
|  | ||||
|   source_position = GRAPHENE_POINT3D_INIT (0.f, 0.f, 0.f); | ||||
|   ClutterVertex source_position = { 0., }; | ||||
|  | ||||
|   if (bind->source == NULL) | ||||
|     return; | ||||
| @@ -377,8 +328,6 @@ clutter_bind_constraint_class_init (ClutterBindConstraintClass *klass) | ||||
|   meta_class->set_actor = clutter_bind_constraint_set_actor; | ||||
|  | ||||
|   constraint_class->update_allocation = clutter_bind_constraint_update_allocation; | ||||
|   constraint_class->update_preferred_size = clutter_bind_constraint_update_preferred_size; | ||||
|  | ||||
|   /** | ||||
|    * ClutterBindConstraint:source: | ||||
|    * | ||||
|   | ||||
| @@ -48,28 +48,28 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterBindConstraint           ClutterBindConstraint; | ||||
| typedef struct _ClutterBindConstraintClass      ClutterBindConstraintClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_bind_constraint_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterConstraint *   clutter_bind_constraint_new            (ClutterActor          *source, | ||||
|                                                               ClutterBindCoordinate  coordinate, | ||||
|                                                               gfloat                 offset); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void                  clutter_bind_constraint_set_source     (ClutterBindConstraint *constraint, | ||||
|                                                               ClutterActor          *source); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterActor *        clutter_bind_constraint_get_source     (ClutterBindConstraint *constraint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void                  clutter_bind_constraint_set_coordinate (ClutterBindConstraint *constraint, | ||||
|                                                               ClutterBindCoordinate  coordinate); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterBindCoordinate clutter_bind_constraint_get_coordinate (ClutterBindConstraint *constraint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void                  clutter_bind_constraint_set_offset     (ClutterBindConstraint *constraint, | ||||
|                                                               gfloat                 offset); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| gfloat                clutter_bind_constraint_get_offset     (ClutterBindConstraint *constraint); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -94,7 +94,9 @@ | ||||
|  * #ClutterBindingPool is available since Clutter 1.0 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-binding-pool.h" | ||||
| #include "clutter-debug.h" | ||||
| @@ -235,7 +237,8 @@ clutter_binding_pool_finalize (GObject *gobject) | ||||
|  | ||||
|   g_hash_table_destroy (pool->entries_hash); | ||||
|  | ||||
|   g_slist_free_full (pool->entries, (GDestroyNotify) binding_entry_free); | ||||
|   g_slist_foreach (pool->entries, (GFunc) binding_entry_free, NULL); | ||||
|   g_slist_free (pool->entries); | ||||
|  | ||||
|   G_OBJECT_CLASS (clutter_binding_pool_parent_class)->finalize (gobject); | ||||
| } | ||||
|   | ||||
| @@ -71,17 +71,17 @@ typedef gboolean (* ClutterBindingActionFunc) (GObject             *gobject, | ||||
|                                                ClutterModifierType  modifiers, | ||||
|                                                gpointer             user_data); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GType clutter_binding_pool_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| ClutterBindingPool *  clutter_binding_pool_new              (const gchar         *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| ClutterBindingPool *  clutter_binding_pool_get_for_class    (gpointer             klass); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| ClutterBindingPool *  clutter_binding_pool_find             (const gchar         *name); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_install_action   (ClutterBindingPool  *pool, | ||||
|                                                              const gchar         *action_name, | ||||
|                                                              guint                key_val, | ||||
| @@ -89,44 +89,44 @@ void                  clutter_binding_pool_install_action   (ClutterBindingPool | ||||
|                                                              GCallback            callback, | ||||
|                                                              gpointer             data, | ||||
|                                                              GDestroyNotify       notify); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_install_closure  (ClutterBindingPool  *pool, | ||||
|                                                              const gchar         *action_name, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers, | ||||
|                                                              GClosure            *closure); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_override_action  (ClutterBindingPool  *pool, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers, | ||||
|                                                              GCallback            callback, | ||||
|                                                              gpointer             data, | ||||
|                                                              GDestroyNotify       notify); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_override_closure (ClutterBindingPool  *pool, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers, | ||||
|                                                              GClosure            *closure); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| const gchar *         clutter_binding_pool_find_action      (ClutterBindingPool  *pool, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_remove_action    (ClutterBindingPool  *pool, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| gboolean              clutter_binding_pool_activate         (ClutterBindingPool  *pool, | ||||
|                                                              guint                key_val, | ||||
|                                                              ClutterModifierType  modifiers, | ||||
|                                                              GObject             *gobject); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_block_action     (ClutterBindingPool  *pool, | ||||
|                                                              const gchar         *action_name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                  clutter_binding_pool_unblock_action   (ClutterBindingPool  *pool, | ||||
|                                                              const gchar         *action_name); | ||||
|  | ||||
|   | ||||
| @@ -37,7 +37,9 @@ | ||||
| #define CLUTTER_IS_BLUR_EFFECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BLUR_EFFECT)) | ||||
| #define CLUTTER_BLUR_EFFECT_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BLUR_EFFECT, ClutterBlurEffectClass)) | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
|  | ||||
| @@ -99,8 +101,7 @@ G_DEFINE_TYPE (ClutterBlurEffect, | ||||
|                CLUTTER_TYPE_OFFSCREEN_EFFECT); | ||||
|  | ||||
| static gboolean | ||||
| clutter_blur_effect_pre_paint (ClutterEffect       *effect, | ||||
|                                ClutterPaintContext *paint_context) | ||||
| clutter_blur_effect_pre_paint (ClutterEffect *effect) | ||||
| { | ||||
|   ClutterBlurEffect *self = CLUTTER_BLUR_EFFECT (effect); | ||||
|   ClutterEffectClass *parent_class; | ||||
| @@ -125,7 +126,7 @@ clutter_blur_effect_pre_paint (ClutterEffect       *effect, | ||||
|     } | ||||
|  | ||||
|   parent_class = CLUTTER_EFFECT_CLASS (clutter_blur_effect_parent_class); | ||||
|   if (parent_class->pre_paint (effect, paint_context)) | ||||
|   if (parent_class->pre_paint (effect)) | ||||
|     { | ||||
|       ClutterOffscreenEffect *offscreen_effect = | ||||
|         CLUTTER_OFFSCREEN_EFFECT (effect); | ||||
| @@ -158,12 +159,9 @@ clutter_blur_effect_pre_paint (ClutterEffect       *effect, | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                                   ClutterPaintContext    *paint_context) | ||||
| clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect) | ||||
| { | ||||
|   ClutterBlurEffect *self = CLUTTER_BLUR_EFFECT (effect); | ||||
|   CoglFramebuffer *framebuffer = | ||||
|     clutter_paint_context_get_framebuffer (paint_context); | ||||
|   guint8 paint_opacity; | ||||
|  | ||||
|   paint_opacity = clutter_actor_get_paint_opacity (self->actor); | ||||
| @@ -173,19 +171,19 @@ clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity); | ||||
|   cogl_push_source (self->pipeline); | ||||
|  | ||||
|   cogl_framebuffer_draw_rectangle (framebuffer, | ||||
|                                    self->pipeline, | ||||
|                                    0, 0, | ||||
|                                    self->tex_width, self->tex_height); | ||||
|   cogl_rectangle (0, 0, self->tex_width, self->tex_height); | ||||
|  | ||||
|   cogl_pop_source (); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_blur_effect_modify_paint_volume (ClutterEffect      *effect, | ||||
|                                          ClutterPaintVolume *volume) | ||||
| clutter_blur_effect_get_paint_volume (ClutterEffect      *effect, | ||||
|                                       ClutterPaintVolume *volume) | ||||
| { | ||||
|   gfloat cur_width, cur_height; | ||||
|   graphene_point3d_t origin; | ||||
|   ClutterVertex origin; | ||||
|  | ||||
|   clutter_paint_volume_get_origin (volume, &origin); | ||||
|   cur_width = clutter_paint_volume_get_width (volume); | ||||
| @@ -226,7 +224,7 @@ clutter_blur_effect_class_init (ClutterBlurEffectClass *klass) | ||||
|   gobject_class->dispose = clutter_blur_effect_dispose; | ||||
|  | ||||
|   effect_class->pre_paint = clutter_blur_effect_pre_paint; | ||||
|   effect_class->modify_paint_volume = clutter_blur_effect_modify_paint_volume; | ||||
|   effect_class->get_paint_volume = clutter_blur_effect_get_paint_volume; | ||||
|  | ||||
|   offscreen_class = CLUTTER_OFFSCREEN_EFFECT_CLASS (klass); | ||||
|   offscreen_class->paint_target = clutter_blur_effect_paint_target; | ||||
| @@ -252,7 +250,9 @@ clutter_blur_effect_init (ClutterBlurEffect *self) | ||||
|       cogl_pipeline_add_layer_snippet (klass->base_pipeline, 0, snippet); | ||||
|       cogl_object_unref (snippet); | ||||
|  | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0); | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, | ||||
|                                             0, /* layer number */ | ||||
|                                             COGL_TEXTURE_TYPE_2D); | ||||
|     } | ||||
|  | ||||
|   self->pipeline = cogl_pipeline_copy (klass->base_pipeline); | ||||
|   | ||||
| @@ -48,10 +48,10 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterBlurEffect       ClutterBlurEffect; | ||||
| typedef struct _ClutterBlurEffectClass  ClutterBlurEffectClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_blur_effect_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterEffect *clutter_blur_effect_new (void); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -48,7 +48,9 @@ | ||||
|  * #ClutterBoxLayout is available since Clutter 1.2 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| @@ -150,9 +152,9 @@ typedef struct _RequestedSize | ||||
|   gfloat natural_size; | ||||
| } RequestedSize; | ||||
|  | ||||
| static float distribute_natural_allocation (float          extra_space, | ||||
|                                             unsigned int   n_requested_sizes, | ||||
|                                             RequestedSize *sizes); | ||||
| static gint distribute_natural_allocation (gint                  extra_space, | ||||
| 					   guint                 n_requested_sizes, | ||||
| 					   RequestedSize        *sizes); | ||||
| static void count_expand_children         (ClutterLayoutManager *layout, | ||||
| 					   ClutterContainer     *container, | ||||
| 					   gint                 *visible_children, | ||||
| @@ -624,19 +626,7 @@ get_preferred_size_for_opposite_orientation (ClutterBoxLayout   *self, | ||||
|   else | ||||
|     { | ||||
|       /* Bring children up to size first */ | ||||
|       if (isnormal (size) || size == 0) | ||||
|         { | ||||
|           size = distribute_natural_allocation (MAX (0, size), | ||||
|                                                 nvis_children, | ||||
|                                                 sizes); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           g_critical ("Actor %s (%p) received the invalid " | ||||
|                       "value %f as minimum/natural size\n", | ||||
|                        G_OBJECT_TYPE_NAME (container), container, size); | ||||
|           size = 0; | ||||
|         } | ||||
|       size = distribute_natural_allocation (MAX (0, size), nvis_children, sizes); | ||||
|  | ||||
|       /* Calculate space which hasn't distributed yet, | ||||
|        * and is available for expanding children. | ||||
| @@ -891,18 +881,17 @@ compare_gap (gconstpointer p1, | ||||
|  * | ||||
|  * Pulled from gtksizerequest.c from Gtk+ | ||||
|  */ | ||||
| static float | ||||
| distribute_natural_allocation (float          extra_space, | ||||
|                                unsigned int   n_requested_sizes, | ||||
| static gint | ||||
| distribute_natural_allocation (gint           extra_space, | ||||
|                                guint          n_requested_sizes, | ||||
|                                RequestedSize *sizes) | ||||
| { | ||||
|   unsigned int *spreading; | ||||
|   int i; | ||||
|   guint *spreading; | ||||
|   gint   i; | ||||
|  | ||||
|   g_return_val_if_fail (isnormal (extra_space) || extra_space == 0, 0); | ||||
|   g_return_val_if_fail (extra_space >= 0, 0); | ||||
|  | ||||
|   spreading = g_newa (unsigned int, n_requested_sizes); | ||||
|   spreading = g_newa (guint, n_requested_sizes); | ||||
|  | ||||
|   for (i = 0; i < n_requested_sizes; i++) | ||||
|     spreading[i] = i; | ||||
| @@ -926,7 +915,7 @@ distribute_natural_allocation (float          extra_space, | ||||
|  | ||||
|   /* Sort descending by gap and position. */ | ||||
|   g_qsort_with_data (spreading, | ||||
|                      n_requested_sizes, sizeof (unsigned int), | ||||
|                      n_requested_sizes, sizeof (guint), | ||||
|                      compare_gap, sizes); | ||||
|  | ||||
|   /* Distribute available space. | ||||
| @@ -938,11 +927,11 @@ distribute_natural_allocation (float          extra_space, | ||||
|        * Sort order and reducing remaining space by assigned space | ||||
|        * ensures that space is distributed equally. | ||||
|        */ | ||||
|       int glue = (extra_space + i) / (i + 1); | ||||
|       int gap = sizes[(spreading[i])].natural_size | ||||
|               - sizes[(spreading[i])].minimum_size; | ||||
|       gint glue = (extra_space + i) / (i + 1); | ||||
|       gint gap = sizes[(spreading[i])].natural_size | ||||
|                - sizes[(spreading[i])].minimum_size; | ||||
|  | ||||
|       int extra = MIN (glue, gap); | ||||
|       gint extra = MIN (glue, gap); | ||||
|  | ||||
|       sizes[spreading[i]].minimum_size += extra; | ||||
|  | ||||
| @@ -1069,9 +1058,7 @@ clutter_box_layout_allocate (ClutterLayoutManager   *layout, | ||||
|   else | ||||
|     { | ||||
|       /* Bring children up to size first */ | ||||
|       size = (gint) distribute_natural_allocation (MAX (0, (float) size), | ||||
|                                                    nvis_children, | ||||
|                                                    sizes); | ||||
|       size = distribute_natural_allocation (MAX (0, size), nvis_children, sizes); | ||||
|  | ||||
|       /* Calculate space which hasn't distributed yet, | ||||
|        * and is available for expanding children. | ||||
|   | ||||
| @@ -77,41 +77,41 @@ struct _ClutterBoxLayoutClass | ||||
|   ClutterLayoutManagerClass parent_class; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| GType clutter_box_layout_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| ClutterLayoutManager *  clutter_box_layout_new                 (void); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void                    clutter_box_layout_set_orientation      (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterOrientation   orientation); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| ClutterOrientation      clutter_box_layout_get_orientation      (ClutterBoxLayout    *layout); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| void                    clutter_box_layout_set_spacing          (ClutterBoxLayout    *layout, | ||||
|                                                                  guint                spacing); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| guint                   clutter_box_layout_get_spacing          (ClutterBoxLayout    *layout); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| void                    clutter_box_layout_set_homogeneous      (ClutterBoxLayout    *layout, | ||||
|                                                                  gboolean             homogeneous); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| gboolean                clutter_box_layout_get_homogeneous      (ClutterBoxLayout    *layout); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| void                    clutter_box_layout_set_pack_start       (ClutterBoxLayout    *layout, | ||||
|                                                                  gboolean             pack_start); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| gboolean                clutter_box_layout_get_pack_start       (ClutterBoxLayout    *layout); | ||||
|  | ||||
| CLUTTER_DEPRECATED_FOR(clutter_box_layout_set_orientation) | ||||
| CLUTTER_DEPRECATED_IN_1_12_FOR(clutter_box_layout_set_orientation) | ||||
| void                    clutter_box_layout_set_vertical         (ClutterBoxLayout    *layout, | ||||
|                                                                  gboolean             vertical); | ||||
| CLUTTER_DEPRECATED_FOR(clutter_box_layout_get_orientation) | ||||
| CLUTTER_DEPRECATED_IN_1_12_FOR(clutter_box_layout_get_orientation) | ||||
| gboolean                clutter_box_layout_get_vertical         (ClutterBoxLayout    *layout); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_2 | ||||
| void                    clutter_box_layout_pack                 (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  gboolean             expand, | ||||
| @@ -119,48 +119,48 @@ void                    clutter_box_layout_pack                 (ClutterBoxLayou | ||||
|                                                                  gboolean             y_fill, | ||||
|                                                                  ClutterBoxAlignment  x_align, | ||||
|                                                                  ClutterBoxAlignment  y_align); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_alignment        (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  ClutterBoxAlignment  x_align, | ||||
|                                                                  ClutterBoxAlignment  y_align); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_get_alignment        (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  ClutterBoxAlignment *x_align, | ||||
|                                                                  ClutterBoxAlignment *y_align); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_fill             (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  gboolean             x_fill, | ||||
|                                                                  gboolean             y_fill); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_get_fill             (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  gboolean            *x_fill, | ||||
|                                                                  gboolean            *y_fill); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_expand           (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor, | ||||
|                                                                  gboolean             expand); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| gboolean                clutter_box_layout_get_expand           (ClutterBoxLayout    *layout, | ||||
|                                                                  ClutterActor        *actor); | ||||
|  | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_use_animations   (ClutterBoxLayout    *layout, | ||||
|                                                                  gboolean             animate); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| gboolean                clutter_box_layout_get_use_animations   (ClutterBoxLayout    *layout); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_easing_mode      (ClutterBoxLayout    *layout, | ||||
|                                                                  gulong               mode); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| gulong                  clutter_box_layout_get_easing_mode      (ClutterBoxLayout    *layout); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| void                    clutter_box_layout_set_easing_duration  (ClutterBoxLayout    *layout, | ||||
|                                                                  guint                msecs); | ||||
| CLUTTER_DEPRECATED | ||||
| CLUTTER_DEPRECATED_IN_1_12 | ||||
| guint                   clutter_box_layout_get_easing_duration  (ClutterBoxLayout    *layout); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -37,7 +37,9 @@ | ||||
| #define CLUTTER_IS_BRIGHTNESS_CONTRAST_EFFECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BRIGHTNESS_CONTRAST_EFFECT)) | ||||
| #define CLUTTER_BRIGHTNESS_CONTRAST_EFFECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BRIGHTNESS_CONTRAST_EFFECT, ClutterBrightnessContrastEffectClass)) | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| @@ -121,17 +123,16 @@ G_DEFINE_TYPE (ClutterBrightnessContrastEffect, | ||||
| static gboolean | ||||
| will_have_no_effect (ClutterBrightnessContrastEffect *self) | ||||
| { | ||||
|   return (G_APPROX_VALUE (self->brightness_red, no_change, FLT_EPSILON) && | ||||
|           G_APPROX_VALUE (self->brightness_green, no_change, FLT_EPSILON) && | ||||
|           G_APPROX_VALUE (self->brightness_blue, no_change, FLT_EPSILON) && | ||||
|           G_APPROX_VALUE (self->contrast_red, no_change, FLT_EPSILON) && | ||||
|           G_APPROX_VALUE (self->contrast_green, no_change, FLT_EPSILON) && | ||||
|           G_APPROX_VALUE (self->contrast_blue, no_change, FLT_EPSILON)); | ||||
|   return (self->brightness_red == no_change && | ||||
|           self->brightness_green == no_change && | ||||
|           self->brightness_blue == no_change && | ||||
|           self->contrast_red == no_change && | ||||
|           self->contrast_green == no_change && | ||||
|           self->contrast_blue == no_change); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_brightness_contrast_effect_pre_paint (ClutterEffect       *effect, | ||||
|                                               ClutterPaintContext *paint_context) | ||||
| clutter_brightness_contrast_effect_pre_paint (ClutterEffect *effect) | ||||
| { | ||||
|   ClutterBrightnessContrastEffect *self = CLUTTER_BRIGHTNESS_CONTRAST_EFFECT (effect); | ||||
|   ClutterEffectClass *parent_class; | ||||
| @@ -157,7 +158,7 @@ clutter_brightness_contrast_effect_pre_paint (ClutterEffect       *effect, | ||||
|  | ||||
|   parent_class = | ||||
|     CLUTTER_EFFECT_CLASS (clutter_brightness_contrast_effect_parent_class); | ||||
|   if (parent_class->pre_paint (effect, paint_context)) | ||||
|   if (parent_class->pre_paint (effect)) | ||||
|     { | ||||
|       ClutterOffscreenEffect *offscreen_effect = | ||||
|         CLUTTER_OFFSCREEN_EFFECT (effect); | ||||
| @@ -176,12 +177,9 @@ clutter_brightness_contrast_effect_pre_paint (ClutterEffect       *effect, | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                                                  ClutterPaintContext    *paint_context) | ||||
| clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect) | ||||
| { | ||||
|   ClutterBrightnessContrastEffect *self = CLUTTER_BRIGHTNESS_CONTRAST_EFFECT (effect); | ||||
|   CoglFramebuffer *framebuffer = | ||||
|    clutter_paint_context_get_framebuffer (paint_context); | ||||
|   ClutterActor *actor; | ||||
|   guint8 paint_opacity; | ||||
|  | ||||
| @@ -193,11 +191,11 @@ clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity); | ||||
|   cogl_push_source (self->pipeline); | ||||
|  | ||||
|   cogl_framebuffer_draw_rectangle (framebuffer, | ||||
|                                    self->pipeline, | ||||
|                                    0, 0, | ||||
|                                    self->tex_width, self->tex_height); | ||||
|   cogl_rectangle (0, 0, self->tex_width, self->tex_height); | ||||
|  | ||||
|   cogl_pop_source (); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -441,7 +439,9 @@ clutter_brightness_contrast_effect_init (ClutterBrightnessContrastEffect *self) | ||||
|       cogl_pipeline_add_snippet (klass->base_pipeline, snippet); | ||||
|       cogl_object_unref (snippet); | ||||
|  | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0); | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, | ||||
|                                             0, /* layer number */ | ||||
|                                             COGL_TEXTURE_TYPE_2D); | ||||
|     } | ||||
|  | ||||
|   self->pipeline = cogl_pipeline_copy (klass->base_pipeline); | ||||
| @@ -497,9 +497,9 @@ clutter_brightness_contrast_effect_set_brightness_full (ClutterBrightnessContras | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_BRIGHTNESS_CONTRAST_EFFECT (effect)); | ||||
|  | ||||
|   if (G_APPROX_VALUE (red, effect->brightness_red, FLT_EPSILON) && | ||||
|       G_APPROX_VALUE (green, effect->brightness_green, FLT_EPSILON) && | ||||
|       G_APPROX_VALUE (blue, effect->brightness_blue, FLT_EPSILON)) | ||||
|   if (red == effect->brightness_red && | ||||
|       green == effect->brightness_green && | ||||
|       blue == effect->brightness_blue) | ||||
|     return; | ||||
|  | ||||
|   effect->brightness_red = red; | ||||
| @@ -587,9 +587,9 @@ clutter_brightness_contrast_effect_set_contrast_full (ClutterBrightnessContrastE | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_BRIGHTNESS_CONTRAST_EFFECT (effect)); | ||||
|  | ||||
|   if (G_APPROX_VALUE (red, effect->contrast_red, FLT_EPSILON) && | ||||
|       G_APPROX_VALUE (green, effect->contrast_green, FLT_EPSILON) && | ||||
|       G_APPROX_VALUE (blue, effect->contrast_blue, FLT_EPSILON)) | ||||
|   if (red == effect->contrast_red && | ||||
|       green == effect->contrast_green && | ||||
|       blue == effect->contrast_blue) | ||||
|     return; | ||||
|  | ||||
|   effect->contrast_red = red; | ||||
|   | ||||
| @@ -49,35 +49,35 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterBrightnessContrastEffect         ClutterBrightnessContrastEffect; | ||||
| typedef struct _ClutterBrightnessContrastEffectClass    ClutterBrightnessContrastEffectClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| GType clutter_brightness_contrast_effect_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterEffect * clutter_brightness_contrast_effect_new                          (void); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_set_brightness_full          (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                            red, | ||||
|                                                                                  float                            green, | ||||
|                                                                                  float                            blue); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_set_brightness               (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                            brightness); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_get_brightness               (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                           *red, | ||||
|                                                                                  float                           *green, | ||||
|                                                                                  float                           *blue); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_set_contrast_full            (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                            red, | ||||
|                                                                                  float                            green, | ||||
|                                                                                  float                            blue); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_set_contrast                 (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                            contrast); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_brightness_contrast_effect_get_contrast                 (ClutterBrightnessContrastEffect *effect, | ||||
|                                                                                  float                           *red, | ||||
|                                                                                  float                           *green, | ||||
|   | ||||
| @@ -1,14 +0,0 @@ | ||||
| /* Mutter version */ | ||||
| #mesondefine MUTTER_VERSION | ||||
|  | ||||
| /* List of Cogl drivers */ | ||||
| #mesondefine CLUTTER_DRIVERS | ||||
|  | ||||
| /* Have evdev support for input handling */ | ||||
| #mesondefine HAVE_EVDEV | ||||
|  | ||||
| /* Building with libwacom for advanced tablet management */ | ||||
| #mesondefine HAVE_LIBWACOM | ||||
|  | ||||
| /* Supports PangoFt2 */ | ||||
| #mesondefine HAVE_PANGO_FT2 | ||||
| @@ -27,7 +27,9 @@ | ||||
|  * Clutter provides some utility functions for using Cairo. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-cairo.h" | ||||
| #include "clutter-color.h" | ||||
|   | ||||
| @@ -50,9 +50,9 @@ G_BEGIN_DECLS | ||||
| #define CLUTTER_CAIRO_FORMAT_ARGB32     (COGL_PIXEL_FORMAT_ARGB_8888_PRE) | ||||
| #endif | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| void    clutter_cairo_clear             (cairo_t               *cr); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void    clutter_cairo_set_source_color  (cairo_t               *cr, | ||||
|                                          const ClutterColor    *color); | ||||
|  | ||||
|   | ||||
| @@ -42,9 +42,10 @@ | ||||
|  * #ClutterCanvas is available since Clutter 1.10. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
| #include <cogl/cogl.h> | ||||
| #include <cairo-gobject.h> | ||||
|  | ||||
| @@ -70,12 +71,14 @@ struct _ClutterCanvasPrivate | ||||
|  | ||||
|   int width; | ||||
|   int height; | ||||
|   float scale_factor; | ||||
|  | ||||
|   CoglTexture *texture; | ||||
|   gboolean dirty; | ||||
|  | ||||
|   CoglBitmap *buffer; | ||||
|  | ||||
|   int scale_factor; | ||||
|   guint scale_factor_set : 1; | ||||
| }; | ||||
|  | ||||
| enum | ||||
| @@ -85,6 +88,7 @@ enum | ||||
|   PROP_WIDTH, | ||||
|   PROP_HEIGHT, | ||||
|   PROP_SCALE_FACTOR, | ||||
|   PROP_SCALE_FACTOR_SET, | ||||
|  | ||||
|   LAST_PROP | ||||
| }; | ||||
| @@ -100,7 +104,7 @@ enum | ||||
|  | ||||
| static guint canvas_signals[LAST_SIGNAL] = { 0, }; | ||||
|  | ||||
| static void clutter_content_iface_init (ClutterContentInterface *iface); | ||||
| static void clutter_content_iface_init (ClutterContentIface *iface); | ||||
|  | ||||
| G_DEFINE_TYPE_WITH_CODE (ClutterCanvas, clutter_canvas, G_TYPE_OBJECT, | ||||
|                          G_ADD_PRIVATE (ClutterCanvas) | ||||
| @@ -182,16 +186,8 @@ clutter_canvas_set_property (GObject      *gobject, | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR: | ||||
|       { | ||||
|         gfloat new_scale_factor = g_value_get_float (value); | ||||
|  | ||||
|         if (priv->scale_factor != new_scale_factor) | ||||
|           { | ||||
|             priv->scale_factor = new_scale_factor; | ||||
|  | ||||
|             clutter_content_invalidate (CLUTTER_CONTENT (gobject)); | ||||
|           } | ||||
|       } | ||||
|       clutter_canvas_set_scale_factor (CLUTTER_CANVAS (gobject), | ||||
|                                        g_value_get_int (value)); | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
| @@ -219,7 +215,14 @@ clutter_canvas_get_property (GObject    *gobject, | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR: | ||||
|       g_value_set_float (value, priv->scale_factor); | ||||
|       if (priv->scale_factor_set) | ||||
|         g_value_set_int (value, priv->scale_factor); | ||||
|       else | ||||
|         g_value_set_int (value, -1); | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR_SET: | ||||
|       g_value_set_boolean (value, priv->scale_factor_set); | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
| @@ -265,19 +268,46 @@ clutter_canvas_class_init (ClutterCanvasClass *klass) | ||||
|                       G_PARAM_READWRITE | | ||||
|                       G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas:scale-factor-set: | ||||
|    * | ||||
|    * Whether the #ClutterCanvas:scale-factor property is set. | ||||
|    * | ||||
|    * If the #ClutterCanvas:scale-factor-set property is %FALSE | ||||
|    * then #ClutterCanvas will use the #ClutterSettings:window-scaling-factor | ||||
|    * property. | ||||
|    * | ||||
|    * Since: 1.18 | ||||
|    */ | ||||
|   obj_props[PROP_SCALE_FACTOR_SET] = | ||||
|     g_param_spec_boolean ("scale-factor-set", | ||||
|                           P_("Scale Factor Set"), | ||||
|                           P_("Whether the scale-factor property is set"), | ||||
|                           FALSE, | ||||
|                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas:scale-factor: | ||||
|    * | ||||
|    * The height of the canvas. | ||||
|    * The scaling factor to be applied to the Cairo surface used for | ||||
|    * drawing. | ||||
|    * | ||||
|    * If #ClutterCanvas:scale-factor is set to a negative value, the | ||||
|    * value of the #ClutterSettings:window-scaling-factor property is | ||||
|    * used instead. | ||||
|    * | ||||
|    * Use #ClutterCanvas:scale-factor-set to check if the scale factor | ||||
|    * is set. | ||||
|    * | ||||
|    * Since: 1.18 | ||||
|    */ | ||||
|   obj_props[PROP_SCALE_FACTOR] = | ||||
|     g_param_spec_float ("scale-factor", | ||||
|                         P_("Scale Factor"), | ||||
|                         P_("The Scale factor of the canvas"), | ||||
|                         0.01f, G_MAXFLOAT, | ||||
|                         1.0f, | ||||
|                         G_PARAM_READWRITE | | ||||
|                         G_PARAM_STATIC_STRINGS); | ||||
|     g_param_spec_int ("scale-factor", | ||||
|                       P_("Scale Factor"), | ||||
|                       P_("The scaling factor for the surface"), | ||||
|                       -1, 1000, | ||||
|                       -1, | ||||
|                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas::draw: | ||||
| @@ -324,14 +354,13 @@ clutter_canvas_init (ClutterCanvas *self) | ||||
|  | ||||
|   self->priv->width = -1; | ||||
|   self->priv->height = -1; | ||||
|   self->priv->scale_factor = 1.0f; | ||||
|   self->priv->scale_factor = -1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_canvas_paint_content (ClutterContent      *content, | ||||
|                               ClutterActor        *actor, | ||||
|                               ClutterPaintNode    *root, | ||||
|                               ClutterPaintContext *paint_context) | ||||
| clutter_canvas_paint_content (ClutterContent   *content, | ||||
|                               ClutterActor     *actor, | ||||
|                               ClutterPaintNode *root) | ||||
| { | ||||
|   ClutterCanvas *self = CLUTTER_CANVAS (content); | ||||
|   ClutterCanvasPrivate *priv = self->priv; | ||||
| @@ -352,7 +381,7 @@ clutter_canvas_paint_content (ClutterContent      *content, | ||||
|     return; | ||||
|  | ||||
|   node = clutter_actor_create_texture_paint_node (actor, priv->texture); | ||||
|   clutter_paint_node_set_static_name (node, "Canvas Content"); | ||||
|   clutter_paint_node_set_name (node, "Canvas Content"); | ||||
|   clutter_paint_node_add_child (root, node); | ||||
|   clutter_paint_node_unref (node); | ||||
|  | ||||
| @@ -368,18 +397,28 @@ clutter_canvas_emit_draw (ClutterCanvas *self) | ||||
|   gboolean mapped_buffer; | ||||
|   unsigned char *data; | ||||
|   CoglBuffer *buffer; | ||||
|   int window_scale = 1; | ||||
|   gboolean res; | ||||
|   cairo_t *cr; | ||||
|  | ||||
|   g_assert (priv->height > 0 && priv->width > 0); | ||||
|   g_assert (priv->width > 0 && priv->width > 0); | ||||
|  | ||||
|   priv->dirty = TRUE; | ||||
|  | ||||
|   real_width = ceilf (priv->width * priv->scale_factor); | ||||
|   real_height = ceilf (priv->height * priv->scale_factor); | ||||
|   if (priv->scale_factor_set) | ||||
|     window_scale = priv->scale_factor; | ||||
|   else | ||||
|     g_object_get (clutter_settings_get_default (), | ||||
|                   "window-scaling-factor", &window_scale, | ||||
|                   NULL); | ||||
|  | ||||
|   CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d", | ||||
|                 priv->width, priv->height); | ||||
|   real_width = priv->width * window_scale; | ||||
|   real_height = priv->height * window_scale; | ||||
|  | ||||
|   CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d (real: %d x %d, scale: %d)", | ||||
|                 priv->width, priv->height, | ||||
|                 real_width, real_height, | ||||
|                 window_scale); | ||||
|  | ||||
|   if (priv->buffer == NULL) | ||||
|     { | ||||
| @@ -422,9 +461,7 @@ clutter_canvas_emit_draw (ClutterCanvas *self) | ||||
|       mapped_buffer = FALSE; | ||||
|     } | ||||
|  | ||||
|   cairo_surface_set_device_scale (surface, | ||||
|                                   priv->scale_factor, | ||||
|                                   priv->scale_factor); | ||||
|   cairo_surface_set_device_scale (surface, window_scale, window_scale); | ||||
|  | ||||
|   self->priv->cr = cr = cairo_create (surface); | ||||
|  | ||||
| @@ -487,16 +524,16 @@ clutter_canvas_get_preferred_size (ClutterContent *content, | ||||
|     return FALSE; | ||||
|  | ||||
|   if (width != NULL) | ||||
|     *width = ceilf (priv->width * priv->scale_factor); | ||||
|     *width = priv->width; | ||||
|  | ||||
|   if (height != NULL) | ||||
|     *height = ceilf (priv->height * priv->scale_factor); | ||||
|     *height = priv->height; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_content_iface_init (ClutterContentInterface *iface) | ||||
| clutter_content_iface_init (ClutterContentIface *iface) | ||||
| { | ||||
|   iface->invalidate = clutter_canvas_invalidate; | ||||
|   iface->paint_content = clutter_canvas_paint_content; | ||||
| @@ -603,44 +640,77 @@ clutter_canvas_set_size (ClutterCanvas *canvas, | ||||
| /** | ||||
|  * clutter_canvas_set_scale_factor: | ||||
|  * @canvas: a #ClutterCanvas | ||||
|  * @scale: the integer scaling factor of the canvas | ||||
|  * @scale: the scale factor, or -1 for the default | ||||
|  * | ||||
|  * Sets the scaling factor of the @canvas, and invalidates the content. | ||||
|  * Sets the scaling factor for the Cairo surface used by @canvas. | ||||
|  * | ||||
|  * This function will cause the @canvas to be invalidated only | ||||
|  * if the scale factor of the canvas surface has changed. | ||||
|  * This function should rarely be used. | ||||
|  * | ||||
|  * The default scaling factor of a #ClutterCanvas content uses the | ||||
|  * #ClutterSettings:window-scaling-factor property, which is set by | ||||
|  * the windowing system. By using this function it is possible to | ||||
|  * override that setting. | ||||
|  * | ||||
|  * Changing the scale factor will invalidate the @canvas. | ||||
|  * | ||||
|  * Since: 1.18 | ||||
|  */ | ||||
| void | ||||
| clutter_canvas_set_scale_factor (ClutterCanvas *canvas, | ||||
|                                  float          scale) | ||||
|                                  int            scale) | ||||
| { | ||||
|   ClutterCanvasPrivate *priv; | ||||
|   GObject *obj; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_CANVAS (canvas)); | ||||
|   g_return_if_fail (scale > 0.0f); | ||||
|   g_return_if_fail (scale != 0); | ||||
|  | ||||
|   if (canvas->priv->scale_factor != scale) | ||||
|   priv = canvas->priv; | ||||
|  | ||||
|   if (scale < 0) | ||||
|     { | ||||
|       canvas->priv->scale_factor = scale; | ||||
|       if (!priv->scale_factor_set) | ||||
|         return; | ||||
|  | ||||
|       g_object_freeze_notify (G_OBJECT (canvas)); | ||||
|       clutter_content_invalidate (CLUTTER_CONTENT (canvas)); | ||||
|       g_object_thaw_notify (G_OBJECT (canvas)); | ||||
|  | ||||
|       g_object_notify_by_pspec (G_OBJECT (canvas), obj_props[PROP_SCALE_FACTOR]); | ||||
|       priv->scale_factor_set = FALSE; | ||||
|       priv->scale_factor = -1; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if (priv->scale_factor_set && priv->scale_factor == scale) | ||||
|         return; | ||||
|  | ||||
|       priv->scale_factor_set = TRUE; | ||||
|       priv->scale_factor = scale; | ||||
|     } | ||||
|  | ||||
|   clutter_content_invalidate (CLUTTER_CONTENT (canvas)); | ||||
|  | ||||
|   obj = G_OBJECT (canvas); | ||||
|  | ||||
|   g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR]); | ||||
|   g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR_SET]); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_canvas_get_scale_factor: | ||||
|  * @canvas: a #ClutterCanvas | ||||
|  * | ||||
|  * Gets the scale factor of the @canvas. | ||||
|  * Retrieves the scaling factor of @canvas, as set using | ||||
|  * clutter_canvas_set_scale_factor(). | ||||
|  * | ||||
|  * Return value: the current @canvas scale factor or -1 if invalid | ||||
|  * Return value: the scaling factor, or -1 if the @canvas | ||||
|  *   uses the default from #ClutterSettings | ||||
|  * | ||||
|  * Since: 1.18 | ||||
|  */ | ||||
| float | ||||
| int | ||||
| clutter_canvas_get_scale_factor (ClutterCanvas *canvas) | ||||
| { | ||||
|   g_return_val_if_fail (CLUTTER_IS_CANVAS (canvas), -1.0f); | ||||
|   g_return_val_if_fail (CLUTTER_IS_CANVAS (canvas), -1); | ||||
|  | ||||
|   if (!canvas->priv->scale_factor_set) | ||||
|     return -1; | ||||
|  | ||||
|   return canvas->priv->scale_factor; | ||||
| } | ||||
|   | ||||
| @@ -85,21 +85,21 @@ struct _ClutterCanvasClass | ||||
|   gpointer _padding[16]; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| GType clutter_canvas_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| ClutterContent *        clutter_canvas_new                      (void); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean                clutter_canvas_set_size                 (ClutterCanvas *canvas, | ||||
|                                                                  int            width, | ||||
|                                                                  int            height); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_18 | ||||
| void                    clutter_canvas_set_scale_factor         (ClutterCanvas *canvas, | ||||
|                                                                  float          scale); | ||||
| CLUTTER_EXPORT | ||||
| float                   clutter_canvas_get_scale_factor         (ClutterCanvas *canvas); | ||||
|                                                                  int            scale); | ||||
| CLUTTER_AVAILABLE_IN_1_18 | ||||
| int                     clutter_canvas_get_scale_factor         (ClutterCanvas *canvas); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -36,8 +36,9 @@ | ||||
|  * | ||||
|  * #ClutterChildMeta is available since Clutter 0.8 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-child-meta.h" | ||||
| #include "clutter-container.h" | ||||
|   | ||||
| @@ -109,12 +109,12 @@ struct _ClutterChildMetaClass | ||||
|   GObjectClass parent_class; | ||||
| };  | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GType clutter_child_meta_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterContainer *      clutter_child_meta_get_container        (ClutterChildMeta *data); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterActor     *      clutter_child_meta_get_actor            (ClutterChildMeta *data); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -92,7 +92,9 @@ | ||||
|  * #ClutterClickAction is available since Clutter 1.4 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-click-action.h" | ||||
|  | ||||
| @@ -105,8 +107,8 @@ struct _ClutterClickActionPrivate | ||||
| { | ||||
|   ClutterActor *stage; | ||||
|  | ||||
|   gulong event_id; | ||||
|   gulong capture_id; | ||||
|   guint event_id; | ||||
|   guint capture_id; | ||||
|   guint long_press_id; | ||||
|  | ||||
|   gint long_press_threshold; | ||||
| @@ -202,7 +204,11 @@ click_action_emit_long_press (gpointer data) | ||||
|                  CLUTTER_LONG_PRESS_ACTIVATE, | ||||
|                  &result); | ||||
|  | ||||
|   g_clear_signal_handler (&priv->capture_id, priv->stage); | ||||
|   if (priv->capture_id != 0) | ||||
|     { | ||||
|       g_signal_handler_disconnect (priv->stage, priv->capture_id); | ||||
|       priv->capture_id = 0; | ||||
|     } | ||||
|  | ||||
|   click_action_set_pressed (action, FALSE); | ||||
|   click_action_set_held (action, FALSE); | ||||
| @@ -257,7 +263,8 @@ click_action_cancel_long_press (ClutterClickAction *action) | ||||
|  | ||||
|       actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (action)); | ||||
|  | ||||
|       g_clear_handle_id (&priv->long_press_id, g_source_remove); | ||||
|       g_source_remove (priv->long_press_id); | ||||
|       priv->long_press_id = 0; | ||||
|  | ||||
|       g_signal_emit (action, click_signals[LONG_PRESS], 0, | ||||
|                      actor, | ||||
| @@ -350,10 +357,6 @@ on_captured_event (ClutterActor       *stage, | ||||
|  | ||||
|   switch (clutter_event_type (event)) | ||||
|     { | ||||
|     case CLUTTER_TOUCH_CANCEL: | ||||
|       clutter_click_action_release (action); | ||||
|       break; | ||||
|  | ||||
|     case CLUTTER_TOUCH_END: | ||||
|       has_button = FALSE; | ||||
|     case CLUTTER_BUTTON_RELEASE: | ||||
| @@ -370,9 +373,17 @@ on_captured_event (ClutterActor       *stage, | ||||
|       click_action_cancel_long_press (action); | ||||
|  | ||||
|       /* disconnect the capture */ | ||||
|       g_clear_signal_handler (&priv->capture_id, priv->stage); | ||||
|       if (priv->capture_id != 0) | ||||
|         { | ||||
|           g_signal_handler_disconnect (priv->stage, priv->capture_id); | ||||
|           priv->capture_id = 0; | ||||
|         } | ||||
|  | ||||
|       g_clear_handle_id (&priv->long_press_id, g_source_remove); | ||||
|       if (priv->long_press_id != 0) | ||||
|         { | ||||
|           g_source_remove (priv->long_press_id); | ||||
|           priv->long_press_id = 0; | ||||
|         } | ||||
|  | ||||
|       if (!clutter_actor_contains (actor, clutter_event_get_source (event))) | ||||
|         return CLUTTER_EVENT_PROPAGATE; | ||||
| @@ -440,7 +451,7 @@ clutter_click_action_set_actor (ClutterActorMeta *meta, | ||||
|       ClutterActor *old_actor = clutter_actor_meta_get_actor (meta); | ||||
|  | ||||
|       if (old_actor != NULL) | ||||
|         g_clear_signal_handler (&priv->event_id, old_actor); | ||||
|         g_signal_handler_disconnect (old_actor, priv->event_id); | ||||
|  | ||||
|       priv->event_id = 0; | ||||
|     } | ||||
| @@ -448,13 +459,17 @@ clutter_click_action_set_actor (ClutterActorMeta *meta, | ||||
|   if (priv->capture_id != 0) | ||||
|     { | ||||
|       if (priv->stage != NULL) | ||||
|         g_clear_signal_handler (&priv->capture_id, priv->stage); | ||||
|         g_signal_handler_disconnect (priv->stage, priv->capture_id); | ||||
|  | ||||
|       priv->capture_id = 0; | ||||
|       priv->stage = NULL; | ||||
|     } | ||||
|  | ||||
|   g_clear_handle_id (&priv->long_press_id, g_source_remove); | ||||
|   if (priv->long_press_id != 0) | ||||
|     { | ||||
|       g_source_remove (priv->long_press_id); | ||||
|       priv->long_press_id = 0; | ||||
|     } | ||||
|  | ||||
|   click_action_set_pressed (action, FALSE); | ||||
|   click_action_set_held (action, FALSE); | ||||
| @@ -528,12 +543,24 @@ clutter_click_action_dispose (GObject *gobject) | ||||
| { | ||||
|   ClutterClickActionPrivate *priv = CLUTTER_CLICK_ACTION (gobject)->priv; | ||||
|  | ||||
|   g_clear_signal_handler (&priv->event_id, | ||||
|                           clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (gobject))); | ||||
|   if (priv->event_id) | ||||
|     { | ||||
|       g_signal_handler_disconnect (clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (gobject)), | ||||
|                                    priv->event_id); | ||||
|       priv->event_id = 0; | ||||
|     } | ||||
|  | ||||
|   g_clear_signal_handler (&priv->capture_id, priv->stage); | ||||
|   if (priv->capture_id) | ||||
|     { | ||||
|       g_signal_handler_disconnect (priv->stage, priv->capture_id); | ||||
|       priv->capture_id = 0; | ||||
|     } | ||||
|  | ||||
|   g_clear_handle_id (&priv->long_press_id, g_source_remove); | ||||
|   if (priv->long_press_id) | ||||
|     { | ||||
|       g_source_remove (priv->long_press_id); | ||||
|       priv->long_press_id = 0; | ||||
|     } | ||||
|  | ||||
|   G_OBJECT_CLASS (clutter_click_action_parent_class)->dispose (gobject); | ||||
| } | ||||
| @@ -637,7 +664,8 @@ clutter_click_action_class_init (ClutterClickActionClass *klass) | ||||
|                   G_TYPE_FROM_CLASS (klass), | ||||
|                   G_SIGNAL_RUN_LAST, | ||||
|                   G_STRUCT_OFFSET (ClutterClickActionClass, clicked), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__OBJECT, | ||||
|                   G_TYPE_NONE, 1, | ||||
|                   CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| @@ -731,7 +759,11 @@ clutter_click_action_release (ClutterClickAction *action) | ||||
|     return; | ||||
|  | ||||
|   /* disconnect the capture */ | ||||
|   g_clear_signal_handler (&priv->capture_id, priv->stage); | ||||
|   if (priv->capture_id != 0) | ||||
|     { | ||||
|       g_signal_handler_disconnect (priv->stage, priv->capture_id); | ||||
|       priv->capture_id = 0; | ||||
|     } | ||||
|  | ||||
|   click_action_cancel_long_press (action); | ||||
|   click_action_set_held (action, FALSE); | ||||
|   | ||||
| @@ -97,22 +97,22 @@ struct _ClutterClickActionClass | ||||
|   void (* _clutter_click_action7) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_click_action_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterAction *        clutter_click_action_new        (void); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| guint                  clutter_click_action_get_button (ClutterClickAction *action); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterModifierType    clutter_click_action_get_state  (ClutterClickAction *action); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_8 | ||||
| void                   clutter_click_action_get_coords (ClutterClickAction *action, | ||||
|                                                         gfloat             *press_x, | ||||
|                                                         gfloat             *press_y); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void                   clutter_click_action_release    (ClutterClickAction *action); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -37,7 +37,9 @@ | ||||
|  * #ClutterClone is available since Clutter 1.0 | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
| #include "clutter-actor-private.h" | ||||
| @@ -52,7 +54,6 @@ | ||||
| struct _ClutterClonePrivate | ||||
| { | ||||
|   ClutterActor *clone_source; | ||||
|   gulong source_destroy_id; | ||||
| }; | ||||
|  | ||||
| G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR) | ||||
| @@ -152,8 +153,7 @@ clutter_clone_apply_transform (ClutterActor *self, CoglMatrix *matrix) | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_clone_paint (ClutterActor        *actor, | ||||
|                      ClutterPaintContext *paint_context) | ||||
| clutter_clone_paint (ClutterActor *actor) | ||||
| { | ||||
|   ClutterClone *self = CLUTTER_CLONE (actor); | ||||
|   ClutterClonePrivate *priv = self->priv; | ||||
| @@ -190,7 +190,7 @@ clutter_clone_paint (ClutterActor        *actor, | ||||
|   if (clutter_actor_is_realized (priv->clone_source)) | ||||
|     { | ||||
|       _clutter_actor_push_clone_paint (); | ||||
|       clutter_actor_paint (priv->clone_source, paint_context); | ||||
|       clutter_actor_paint (priv->clone_source); | ||||
|       _clutter_actor_pop_clone_paint (); | ||||
|     } | ||||
|  | ||||
| @@ -253,13 +253,6 @@ clutter_clone_allocate (ClutterActor           *self, | ||||
|   if (priv->clone_source == NULL) | ||||
|     return; | ||||
|  | ||||
|   /* ClutterActor delays allocating until the actor is shown; however | ||||
|    * we cannot paint it correctly in that case, so force an allocation. | ||||
|    */ | ||||
|   if (clutter_actor_get_parent (priv->clone_source) != NULL && | ||||
|       !clutter_actor_has_allocation (priv->clone_source)) | ||||
|     clutter_actor_allocate_preferred_size (priv->clone_source, flags); | ||||
|  | ||||
| #if 0 | ||||
|   /* XXX - this is wrong: ClutterClone cannot clone unparented | ||||
|    * actors, as it will break all invariants | ||||
| @@ -383,13 +376,6 @@ clutter_clone_new (ClutterActor *source) | ||||
|   return g_object_new (CLUTTER_TYPE_CLONE, "source", source,  NULL); | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_source_destroyed (ClutterActor *source, | ||||
|                      ClutterClone *self) | ||||
| { | ||||
|   clutter_clone_set_source_internal (self, NULL); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_clone_set_source_internal (ClutterClone *self, | ||||
| 				   ClutterActor *source) | ||||
| @@ -401,7 +387,6 @@ clutter_clone_set_source_internal (ClutterClone *self, | ||||
|  | ||||
|   if (priv->clone_source != NULL) | ||||
|     { | ||||
|       g_clear_signal_handler (&priv->source_destroy_id, priv->clone_source); | ||||
|       _clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self)); | ||||
|       g_object_unref (priv->clone_source); | ||||
|       priv->clone_source = NULL; | ||||
| @@ -411,8 +396,6 @@ clutter_clone_set_source_internal (ClutterClone *self, | ||||
|     { | ||||
|       priv->clone_source = g_object_ref (source); | ||||
|       _clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self)); | ||||
|       priv->source_destroy_id = g_signal_connect (priv->clone_source, "destroy", | ||||
|                                                   G_CALLBACK (on_source_destroyed), self); | ||||
|     } | ||||
|  | ||||
|   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]); | ||||
|   | ||||
| @@ -78,15 +78,15 @@ struct _ClutterCloneClass | ||||
|   void (*_clutter_actor_clone4) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GType clutter_clone_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| ClutterActor *  clutter_clone_new               (ClutterActor *source); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void            clutter_clone_set_source        (ClutterClone *self, | ||||
|                                                  ClutterActor *source); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| ClutterActor *  clutter_clone_get_source        (ClutterClone *self); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -33,7 +33,9 @@ | ||||
|  * The alpha channel is fully opaque at 255 and fully transparent at 0. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| @@ -46,7 +48,7 @@ | ||||
| #include "clutter-debug.h" | ||||
|  | ||||
| /* XXX - keep in sync with the ClutterStaticColor enumeration order */ | ||||
| static const ClutterColor static_colors[] = { | ||||
| static const ClutterColor const static_colors[] = { | ||||
|   /* CGA/EGA color palette */ | ||||
|   { 0xff, 0xff, 0xff, 0xff },   /* white */ | ||||
|   { 0x00, 0x00, 0x00, 0xff },   /* black */ | ||||
|   | ||||
| @@ -68,76 +68,76 @@ struct _ClutterColor | ||||
|  */ | ||||
| #define CLUTTER_COLOR_INIT(r,g,b,a)     { (r), (g), (b), (a) } | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GType clutter_color_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterColor *clutter_color_new         (guint8              red, | ||||
|                                          guint8              green, | ||||
|                                          guint8              blue, | ||||
|                                          guint8              alpha); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| ClutterColor *clutter_color_alloc       (void); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_12 | ||||
| ClutterColor *clutter_color_init        (ClutterColor       *color, | ||||
|                                          guint8              red, | ||||
|                                          guint8              green, | ||||
|                                          guint8              blue, | ||||
|                                          guint8              alpha); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterColor *clutter_color_copy        (const ClutterColor *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_free        (ClutterColor       *color); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_add         (const ClutterColor *a, | ||||
|                                          const ClutterColor *b, | ||||
|                                          ClutterColor       *result); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_subtract    (const ClutterColor *a, | ||||
|                                          const ClutterColor *b, | ||||
|                                          ClutterColor       *result); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_lighten     (const ClutterColor *color, | ||||
|                                          ClutterColor       *result); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_darken      (const ClutterColor *color, | ||||
|                                          ClutterColor       *result); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_shade       (const ClutterColor *color, | ||||
|                                          gdouble             factor, | ||||
|                                          ClutterColor       *result); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gchar *       clutter_color_to_string   (const ClutterColor *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| gboolean      clutter_color_from_string (ClutterColor       *color, | ||||
|                                          const gchar        *str); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_to_hls      (const ClutterColor *color, | ||||
|                                          gfloat             *hue, | ||||
| 					 gfloat             *luminance, | ||||
| 					 gfloat             *saturation); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_from_hls    (ClutterColor       *color, | ||||
|                                          gfloat              hue, | ||||
|                                          gfloat              luminance, | ||||
|                                          gfloat              saturation); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| guint32       clutter_color_to_pixel    (const ClutterColor *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void          clutter_color_from_pixel  (ClutterColor       *color, | ||||
|                                          guint32             pixel); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| guint         clutter_color_hash        (gconstpointer       v); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean      clutter_color_equal       (gconstpointer       v1, | ||||
|                                          gconstpointer       v2); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_6 | ||||
| void          clutter_color_interpolate (const ClutterColor *initial, | ||||
|                                          const ClutterColor *final, | ||||
|                                          gdouble             progress, | ||||
| @@ -177,22 +177,22 @@ struct _ClutterParamSpecColor | ||||
|   ClutterColor *default_value; | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| void                    clutter_value_set_color         (GValue             *value, | ||||
|                                                          const ClutterColor *color); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| const ClutterColor *    clutter_value_get_color         (const GValue       *value); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GType clutter_param_color_get_type (void) G_GNUC_CONST; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_0 | ||||
| GParamSpec *    clutter_param_spec_color        (const gchar        *name, | ||||
|                                                  const gchar        *nick, | ||||
|                                                  const gchar        *blurb, | ||||
|                                                  const ClutterColor *default_value, | ||||
|                                                  GParamFlags         flags); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_6 | ||||
| const ClutterColor *clutter_color_get_static (ClutterStaticColor color); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -37,7 +37,9 @@ | ||||
| #define CLUTTER_IS_COLORIZE_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_COLORIZE_EFFECT)) | ||||
| #define CLUTTER_COLORIZE_EFFECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_COLORIZE_EFFECT, ClutterColorizeEffectClass)) | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
|  | ||||
| @@ -105,8 +107,7 @@ G_DEFINE_TYPE (ClutterColorizeEffect, | ||||
|                CLUTTER_TYPE_OFFSCREEN_EFFECT); | ||||
|  | ||||
| static gboolean | ||||
| clutter_colorize_effect_pre_paint (ClutterEffect       *effect, | ||||
|                                    ClutterPaintContext *paint_context) | ||||
| clutter_colorize_effect_pre_paint (ClutterEffect *effect) | ||||
| { | ||||
|   ClutterColorizeEffect *self = CLUTTER_COLORIZE_EFFECT (effect); | ||||
|   ClutterEffectClass *parent_class; | ||||
| @@ -127,7 +128,7 @@ clutter_colorize_effect_pre_paint (ClutterEffect       *effect, | ||||
|     } | ||||
|  | ||||
|   parent_class = CLUTTER_EFFECT_CLASS (clutter_colorize_effect_parent_class); | ||||
|   if (parent_class->pre_paint (effect, paint_context)) | ||||
|   if (parent_class->pre_paint (effect)) | ||||
|     { | ||||
|       ClutterOffscreenEffect *offscreen_effect = | ||||
|         CLUTTER_OFFSCREEN_EFFECT (effect); | ||||
| @@ -146,12 +147,9 @@ clutter_colorize_effect_pre_paint (ClutterEffect       *effect, | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                                       ClutterPaintContext    *paint_context) | ||||
| clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect) | ||||
| { | ||||
|   ClutterColorizeEffect *self = CLUTTER_COLORIZE_EFFECT (effect); | ||||
|   CoglFramebuffer *framebuffer = | ||||
|     clutter_paint_context_get_framebuffer (paint_context); | ||||
|   ClutterActor *actor; | ||||
|   guint8 paint_opacity; | ||||
|  | ||||
| @@ -163,11 +161,11 @@ clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity, | ||||
|                               paint_opacity); | ||||
|   cogl_push_source (self->pipeline); | ||||
|  | ||||
|   cogl_framebuffer_draw_rectangle (framebuffer, | ||||
|                                    self->pipeline, | ||||
|                                    0, 0, | ||||
|                                    self->tex_width, self->tex_height); | ||||
|   cogl_rectangle (0, 0, self->tex_width, self->tex_height); | ||||
|  | ||||
|   cogl_pop_source (); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -296,7 +294,9 @@ clutter_colorize_effect_init (ClutterColorizeEffect *self) | ||||
|       cogl_pipeline_add_snippet (klass->base_pipeline, snippet); | ||||
|       cogl_object_unref (snippet); | ||||
|  | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0); | ||||
|       cogl_pipeline_set_layer_null_texture (klass->base_pipeline, | ||||
|                                             0, /* layer number */ | ||||
|                                             COGL_TEXTURE_TYPE_2D); | ||||
|     } | ||||
|  | ||||
|   self->pipeline = cogl_pipeline_copy (klass->base_pipeline); | ||||
|   | ||||
| @@ -49,16 +49,16 @@ G_BEGIN_DECLS | ||||
| typedef struct _ClutterColorizeEffect           ClutterColorizeEffect; | ||||
| typedef struct _ClutterColorizeEffectClass      ClutterColorizeEffectClass; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_colorize_effect_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterEffect *clutter_colorize_effect_new      (const ClutterColor *tint); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_colorize_effect_set_tint (ClutterColorizeEffect *effect, | ||||
|                                                  const ClutterColor    *tint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void           clutter_colorize_effect_get_tint (ClutterColorizeEffect *effect, | ||||
|                                                  ClutterColor          *tint); | ||||
|  | ||||
|   | ||||
| @@ -30,6 +30,13 @@ gboolean clutter_constraint_update_allocation (ClutterConstraint *constraint, | ||||
|                                                ClutterActor      *actor, | ||||
|                                                ClutterActorBox   *allocation); | ||||
|  | ||||
| void clutter_constraint_update_preferred_size (ClutterConstraint  *constraint, | ||||
|                                                ClutterActor       *actor, | ||||
|                                                ClutterOrientation  direction, | ||||
|                                                float               for_size, | ||||
|                                                float              *minimum_size, | ||||
|                                                float              *natural_size); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_CONSTRAINT_PRIVATE_H__ */ | ||||
|   | ||||
| @@ -48,7 +48,7 @@ | ||||
|  * Constraints provide a way to build user interfaces by using | ||||
|  * relations between #ClutterActors, without explicit fixed | ||||
|  * positioning and sizing, similarly to how fluid layout managers like | ||||
|  * #ClutterBoxLayout lay out their children. | ||||
|  * #ClutterBoxLayout and #ClutterTableLayout lay out their children. | ||||
|  * | ||||
|  * Constraints are attached to a #ClutterActor, and are available | ||||
|  * for inspection using clutter_actor_get_constraints(). | ||||
| @@ -128,7 +128,9 @@ | ||||
|  * can be recovered at any point using clutter_actor_meta_get_actor(). | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| @@ -222,17 +224,6 @@ clutter_constraint_update_allocation (ClutterConstraint *constraint, | ||||
|   return !clutter_actor_box_equal (allocation, &old_alloc); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_constraint_update_preferred_size: | ||||
|  * @constraint: a #ClutterConstraint | ||||
|  * @actor: a #ClutterActor | ||||
|  * @direction: a #ClutterOrientation | ||||
|  * @for_size: the size in the opposite direction | ||||
|  * @minimum_size: (inout): the minimum size to modify | ||||
|  * @natural_size: (inout): the natural size to modify | ||||
|  * | ||||
|  * Asks the @constraint to update the size request of a #ClutterActor. | ||||
|  */ | ||||
| void | ||||
| clutter_constraint_update_preferred_size (ClutterConstraint  *constraint, | ||||
|                                           ClutterActor       *actor, | ||||
|   | ||||
| @@ -96,40 +96,32 @@ struct _ClutterConstraintClass | ||||
|   void (* _clutter_constraint7) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_constraint_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| void clutter_constraint_update_preferred_size (ClutterConstraint  *constraint, | ||||
|                                                ClutterActor       *actor, | ||||
|                                                ClutterOrientation  direction, | ||||
|                                                float               for_size, | ||||
|                                                float              *minimum_size, | ||||
|                                                float              *natural_size); | ||||
|  | ||||
| /* ClutterActor API */ | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_actor_add_constraint            (ClutterActor      *self, | ||||
|                                                             ClutterConstraint *constraint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_actor_add_constraint_with_name  (ClutterActor      *self, | ||||
|                                                             const gchar       *name, | ||||
|                                                             ClutterConstraint *constraint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_actor_remove_constraint         (ClutterActor      *self, | ||||
|                                                             ClutterConstraint *constraint); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_actor_remove_constraint_by_name (ClutterActor      *self, | ||||
|                                                             const gchar       *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GList *            clutter_actor_get_constraints           (ClutterActor      *self); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| ClutterConstraint *clutter_actor_get_constraint            (ClutterActor      *self, | ||||
|                                                             const gchar       *name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void               clutter_actor_clear_constraints         (ClutterActor      *self); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean           clutter_actor_has_constraints           (ClutterActor      *self); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
| @@ -26,7 +26,9 @@ | ||||
|  * Author: Emmanuele Bassi <ebassi@openedhand.com> | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include <stdarg.h> | ||||
| #include <glib-object.h> | ||||
| @@ -37,7 +39,6 @@ | ||||
|  | ||||
| #include "clutter-actor-private.h" | ||||
| #include "clutter-child-meta.h" | ||||
| #include "clutter-container-private.h" | ||||
| #include "clutter-debug.h" | ||||
| #include "clutter-main.h" | ||||
| #include "clutter-marshal.h" | ||||
| @@ -119,6 +120,37 @@ container_real_remove (ClutterContainer *container, | ||||
|   clutter_actor_remove_child (CLUTTER_ACTOR (container), actor); | ||||
| } | ||||
|  | ||||
| typedef struct { | ||||
|   ClutterCallback callback; | ||||
|   gpointer data; | ||||
| } ForeachClosure; | ||||
|  | ||||
| static gboolean | ||||
| foreach_cb (ClutterActor *actor, | ||||
|             gpointer      data) | ||||
| { | ||||
|   ForeachClosure *clos = data; | ||||
|  | ||||
|   clos->callback (actor, clos->data); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| container_real_foreach (ClutterContainer *container, | ||||
|                         ClutterCallback   callback, | ||||
|                         gpointer          user_data) | ||||
| { | ||||
|   ForeachClosure clos; | ||||
|  | ||||
|   clos.callback = callback; | ||||
|   clos.data = user_data; | ||||
|  | ||||
|   _clutter_actor_foreach_child (CLUTTER_ACTOR (container), | ||||
|                                 foreach_cb, | ||||
|                                 &clos); | ||||
| } | ||||
|  | ||||
| static void | ||||
| container_real_raise (ClutterContainer *container, | ||||
|                       ClutterActor     *child, | ||||
| @@ -167,7 +199,8 @@ clutter_container_default_init (ClutterContainerInterface *iface) | ||||
|                   iface_type, | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterContainerIface, actor_added), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__OBJECT, | ||||
|                   G_TYPE_NONE, 1, | ||||
|                   CLUTTER_TYPE_ACTOR); | ||||
|   /** | ||||
| @@ -185,7 +218,8 @@ clutter_container_default_init (ClutterContainerInterface *iface) | ||||
|                   iface_type, | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterContainerIface, actor_removed), | ||||
|                   NULL, NULL, NULL, | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__OBJECT, | ||||
|                   G_TYPE_NONE, 1, | ||||
|                   CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| @@ -213,6 +247,7 @@ clutter_container_default_init (ClutterContainerInterface *iface) | ||||
|  | ||||
|   iface->add = container_real_add; | ||||
|   iface->remove = container_real_remove; | ||||
|   iface->foreach = container_real_foreach; | ||||
|   iface->raise = container_real_raise; | ||||
|   iface->lower = container_real_lower; | ||||
|   iface->sort_depth_order = container_real_sort_depth_order; | ||||
| @@ -385,6 +420,33 @@ clutter_container_add_actor (ClutterContainer *container, | ||||
|   container_add_actor (container, actor); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_add_valist: (skip) | ||||
|  * @container: a #ClutterContainer | ||||
|  * @first_actor: the first #ClutterActor to add | ||||
|  * @var_args: list of actors to add, followed by %NULL | ||||
|  * | ||||
|  * Alternative va_list version of clutter_container_add(). | ||||
|  * | ||||
|  * This function will call #ClutterContainerIface.add(), which is a | ||||
|  * deprecated virtual function. The default implementation will | ||||
|  * call clutter_actor_add_child(). | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.10: Use clutter_actor_add_child() instead. | ||||
|  */ | ||||
| void | ||||
| clutter_container_add_valist (ClutterContainer *container, | ||||
|                               ClutterActor     *first_actor, | ||||
|                               va_list           var_args) | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); | ||||
|  | ||||
|   container_add_valist (container, first_actor, var_args); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_remove: (skip) | ||||
|  * @container: a #ClutterContainer | ||||
| @@ -448,6 +510,42 @@ clutter_container_remove_actor (ClutterContainer *container, | ||||
|   container_remove_actor (container, actor); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_remove_valist: (skip) | ||||
|  * @container: a #ClutterContainer | ||||
|  * @first_actor: the first #ClutterActor to add | ||||
|  * @var_args: list of actors to remove, followed by %NULL | ||||
|  * | ||||
|  * Alternative va_list version of clutter_container_remove(). | ||||
|  * | ||||
|  * This function will call #ClutterContainerIface.remove(), which is a | ||||
|  * deprecated virtual function. The default implementation will call | ||||
|  * clutter_actor_remove_child(). | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.10: Use clutter_actor_remove_child() instead. | ||||
|  */ | ||||
| void | ||||
| clutter_container_remove_valist (ClutterContainer *container, | ||||
|                                  ClutterActor     *first_actor, | ||||
|                                  va_list           var_args) | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); | ||||
|  | ||||
|   container_remove_valist (container, first_actor, var_args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| get_children_cb (ClutterActor *child, | ||||
|                  gpointer      data) | ||||
| { | ||||
|   GList **children = data; | ||||
|  | ||||
|   *children = g_list_prepend (*children, child); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_get_children: | ||||
|  * @container: a #ClutterContainer | ||||
| @@ -465,9 +563,108 @@ clutter_container_remove_actor (ClutterContainer *container, | ||||
| GList * | ||||
| clutter_container_get_children (ClutterContainer *container) | ||||
| { | ||||
|   GList *retval; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_CONTAINER (container), NULL); | ||||
|  | ||||
|   return clutter_actor_get_children (CLUTTER_ACTOR (container)); | ||||
|   retval = NULL; | ||||
|   clutter_container_foreach (container, get_children_cb, &retval); | ||||
|  | ||||
|   return g_list_reverse (retval); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_foreach: | ||||
|  * @container: a #ClutterContainer | ||||
|  * @callback: (scope call): a function to be called for each child | ||||
|  * @user_data: data to be passed to the function, or %NULL | ||||
|  * | ||||
|  * Calls @callback for each child of @container that was added | ||||
|  * by the application (with clutter_container_add_actor()). Does | ||||
|  * not iterate over "internal" children that are part of the | ||||
|  * container's own implementation, if any. | ||||
|  * | ||||
|  * This function calls the #ClutterContainerIface.foreach() | ||||
|  * virtual function, which has been deprecated. | ||||
|  * | ||||
|  * Since: 0.4 | ||||
|  * | ||||
|  * Deprecated: 1.10: Use clutter_actor_get_first_child() or | ||||
|  *   clutter_actor_get_last_child() to retrieve the beginning of | ||||
|  *   the list of children, and clutter_actor_get_next_sibling() | ||||
|  *   and clutter_actor_get_previous_sibling() to iterate over it; | ||||
|  *   alternatively, use the #ClutterActorIter API. | ||||
|  */ | ||||
| void | ||||
| clutter_container_foreach (ClutterContainer *container, | ||||
|                            ClutterCallback   callback, | ||||
|                            gpointer          user_data) | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (callback != NULL); | ||||
|  | ||||
| #ifdef CLUTTER_ENABLE_DEBUG | ||||
|   if (G_UNLIKELY (_clutter_diagnostic_enabled ())) | ||||
|     { | ||||
|       ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); | ||||
|  | ||||
|       if (iface->foreach != container_real_foreach) | ||||
|         _clutter_diagnostic_message ("The ClutterContainer::foreach() " | ||||
|                                      "virtual function has been deprecated " | ||||
|                                      "and it should not be overridden by " | ||||
|                                      "newly written code"); | ||||
|     } | ||||
| #endif /* CLUTTER_ENABLE_DEBUG */ | ||||
|  | ||||
|   CLUTTER_CONTAINER_GET_IFACE (container)->foreach (container, | ||||
|                                                     callback, | ||||
|                                                     user_data); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_container_foreach_with_internals: | ||||
|  * @container: a #ClutterContainer | ||||
|  * @callback: (scope call): a function to be called for each child | ||||
|  * @user_data: data to be passed to the function, or %NULL | ||||
|  * | ||||
|  * Calls @callback for each child of @container, including "internal" | ||||
|  * children built in to the container itself that were never added | ||||
|  * by the application. | ||||
|  * | ||||
|  * This function calls the #ClutterContainerIface.foreach_with_internals() | ||||
|  * virtual function, which has been deprecated. | ||||
|  * | ||||
|  * Since: 1.0 | ||||
|  * | ||||
|  * Deprecated: 1.10: See clutter_container_foreach(). | ||||
|  */ | ||||
| void | ||||
| clutter_container_foreach_with_internals (ClutterContainer *container, | ||||
|                                           ClutterCallback   callback, | ||||
|                                           gpointer          user_data) | ||||
| { | ||||
|   ClutterContainerIface *iface; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (callback != NULL); | ||||
|  | ||||
|   iface = CLUTTER_CONTAINER_GET_IFACE (container); | ||||
|  | ||||
| #ifdef CLUTTER_ENABLE_DEBUG | ||||
|   if (G_UNLIKELY (_clutter_diagnostic_enabled ())) | ||||
|     { | ||||
|       if (iface->foreach_with_internals != NULL) | ||||
|         _clutter_diagnostic_message ("The ClutterContainer::foreach_with_internals() " | ||||
|                                      "virtual function has been deprecated " | ||||
|                                      "and it should not be overridden by " | ||||
|                                      "newly written code"); | ||||
|     } | ||||
| #endif /* CLUTTER_ENABLE_DEBUG */ | ||||
|  | ||||
|   if (iface->foreach_with_internals != NULL) | ||||
|     iface->foreach_with_internals (container, callback, user_data); | ||||
|   else | ||||
|     iface->foreach (container, callback, user_data); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1251,23 +1448,3 @@ clutter_container_child_notify (ClutterContainer *container, | ||||
|                                                          child, | ||||
|                                                          pspec); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_container_emit_actor_added (ClutterContainer *container, | ||||
|                                      ClutterActor     *actor) | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (CLUTTER_IS_ACTOR (actor)); | ||||
|  | ||||
|   g_signal_emit (container, container_signals[ACTOR_ADDED], 0, actor); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_container_emit_actor_removed (ClutterContainer *container, | ||||
|                                        ClutterActor     *actor) | ||||
| { | ||||
|   g_return_if_fail (CLUTTER_IS_CONTAINER (container)); | ||||
|   g_return_if_fail (CLUTTER_IS_ACTOR (actor)); | ||||
|  | ||||
|   g_signal_emit (container, container_signals[ACTOR_REMOVED], 0, actor); | ||||
| } | ||||
|   | ||||
| @@ -59,6 +59,14 @@ typedef struct _ClutterContainerIface   ClutterContainerIface; | ||||
|  *   function is deprecated, and it should not be overridden. | ||||
|  * @remove: virtual function for removing an actor from the container. This | ||||
|  *   virtual function is deprecated, and it should not be overridden. | ||||
|  * @foreach: virtual function for iterating over the container's children. | ||||
|  *   This virtual function is deprecated, and it should not be overridden. | ||||
|  * @foreach_with_internals: virtual functions for iterating over the | ||||
|  *   container's children, both added using the #ClutterContainer API | ||||
|  *   and internal children. The implementation of this virtual function | ||||
|  *   is required only if the #ClutterContainer implementation has | ||||
|  *   internal children. This virtual function is deprecated, and it should | ||||
|  *   not be overridden. | ||||
|  * @raise: virtual function for raising a child. This virtual function is | ||||
|  *   deprecated and it should not be overridden. | ||||
|  * @lower: virtual function for lowering a child. This virtual function is | ||||
| @@ -80,7 +88,7 @@ typedef struct _ClutterContainerIface   ClutterContainerIface; | ||||
|  * @actor_removed: class handler for #ClutterContainer::actor-removed | ||||
|  * @child_notify: class handler for #ClutterContainer::child-notify | ||||
|  * | ||||
|  * Base interface for container actors. The @add and @remove | ||||
|  * Base interface for container actors. The @add, @remove and @foreach | ||||
|  * virtual functions must be provided by any implementation; the other | ||||
|  * virtual functions are optional. | ||||
|  * | ||||
| @@ -96,6 +104,13 @@ struct _ClutterContainerIface | ||||
|                              ClutterActor     *actor); | ||||
|   void (* remove)           (ClutterContainer *container, | ||||
|                              ClutterActor     *actor); | ||||
|   void (* foreach)          (ClutterContainer *container, | ||||
|                              ClutterCallback   callback, | ||||
|                              gpointer          user_data); | ||||
|  | ||||
|   void (* foreach_with_internals) (ClutterContainer *container, | ||||
|                                    ClutterCallback   callback, | ||||
|                                    gpointer          user_data); | ||||
|  | ||||
|   /* child stacking */ | ||||
|   void (* raise)            (ClutterContainer *container, | ||||
| @@ -126,52 +141,52 @@ struct _ClutterContainerIface | ||||
|                           GParamSpec       *pspec); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GType clutter_container_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterActor *          clutter_container_find_child_by_name            (ClutterContainer *container, | ||||
|                                                                          const gchar      *child_name); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GParamSpec *            clutter_container_class_find_child_property     (GObjectClass     *klass, | ||||
|                                                                          const gchar      *property_name); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| GParamSpec **           clutter_container_class_list_child_properties   (GObjectClass     *klass, | ||||
|                                                                          guint            *n_properties); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_create_child_meta             (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *actor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_destroy_child_meta            (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *actor); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| ClutterChildMeta *      clutter_container_get_child_meta                (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *actor); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_child_set_property            (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *child, | ||||
|                                                                          const gchar      * property, | ||||
|                                                                          const GValue     *value); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_child_get_property            (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *child, | ||||
|                                                                          const gchar      *property, | ||||
|                                                                          GValue           *value); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_child_set                     (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *actor, | ||||
|                                                                          const gchar      *first_prop, | ||||
|                                                                          ...) G_GNUC_NULL_TERMINATED; | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_child_get                     (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *actor, | ||||
|                                                                          const gchar      *first_prop, | ||||
|                                                                          ...) G_GNUC_NULL_TERMINATED; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                    clutter_container_child_notify                  (ClutterContainer *container, | ||||
|                                                                          ClutterActor     *child, | ||||
|                                                                          GParamSpec       *pspec); | ||||
|   | ||||
| @@ -34,10 +34,9 @@ void            _clutter_content_attached               (ClutterContent   *conte | ||||
| void            _clutter_content_detached               (ClutterContent   *content, | ||||
|                                                          ClutterActor     *actor); | ||||
|  | ||||
| void            _clutter_content_paint_content          (ClutterContent      *content, | ||||
|                                                          ClutterActor        *actor, | ||||
|                                                          ClutterPaintNode    *node, | ||||
|                                                          ClutterPaintContext *paint_context); | ||||
| void            _clutter_content_paint_content          (ClutterContent   *content, | ||||
|                                                          ClutterActor     *actor, | ||||
|                                                          ClutterPaintNode *node); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -36,15 +36,18 @@ | ||||
|  * #ClutterContent is available since Clutter 1.10. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #include "clutter-actor-private.h" | ||||
| #include "clutter-content-private.h" | ||||
|  | ||||
| #include "clutter-debug.h" | ||||
| #include "clutter-marshal.h" | ||||
| #include "clutter-private.h" | ||||
|  | ||||
| typedef struct _ClutterContentIface     ClutterContentInterface; | ||||
|  | ||||
| enum | ||||
| { | ||||
|   ATTACHED, | ||||
| @@ -91,15 +94,9 @@ clutter_content_real_invalidate (ClutterContent *content) | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_content_real_invalidate_size (ClutterContent *content) | ||||
| { | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_content_real_paint_content (ClutterContent      *content, | ||||
|                                     ClutterActor        *actor, | ||||
|                                     ClutterPaintNode    *context, | ||||
|                                     ClutterPaintContext *paint_context) | ||||
| clutter_content_real_paint_content (ClutterContent   *content, | ||||
|                                     ClutterActor     *actor, | ||||
|                                     ClutterPaintNode *context) | ||||
| { | ||||
| } | ||||
|  | ||||
| @@ -113,7 +110,6 @@ clutter_content_default_init (ClutterContentInterface *iface) | ||||
|   iface->attached = clutter_content_real_attached; | ||||
|   iface->detached = clutter_content_real_detached; | ||||
|   iface->invalidate = clutter_content_real_invalidate; | ||||
|   iface->invalidate_size = clutter_content_real_invalidate_size; | ||||
|  | ||||
|   /** | ||||
|    * ClutterContent::attached: | ||||
| @@ -129,8 +125,9 @@ clutter_content_default_init (ClutterContentInterface *iface) | ||||
|     g_signal_new (I_("attached"), | ||||
|                   G_TYPE_FROM_INTERFACE (iface), | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterContentInterface, attached), | ||||
|                   NULL, NULL, NULL, | ||||
|                   G_STRUCT_OFFSET (ClutterContentIface, attached), | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__OBJECT, | ||||
|                   G_TYPE_NONE, 1, | ||||
|                   CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| @@ -148,8 +145,9 @@ clutter_content_default_init (ClutterContentInterface *iface) | ||||
|     g_signal_new (I_("detached"), | ||||
|                   G_TYPE_FROM_INTERFACE (iface), | ||||
|                   G_SIGNAL_RUN_FIRST, | ||||
|                   G_STRUCT_OFFSET (ClutterContentInterface, detached), | ||||
|                   NULL, NULL, NULL, | ||||
|                   G_STRUCT_OFFSET (ClutterContentIface, detached), | ||||
|                   NULL, NULL, | ||||
|                   _clutter_marshal_VOID__OBJECT, | ||||
|                   G_TYPE_NONE, 1, | ||||
|                   CLUTTER_TYPE_ACTOR); | ||||
| } | ||||
| @@ -192,45 +190,6 @@ clutter_content_invalidate (ClutterContent *content) | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_content_invalidate_size: | ||||
|  * @content: a #ClutterContent | ||||
|  * | ||||
|  * Signals that @content's size changed. Attached actors with request mode | ||||
|  * set to %CLUTTER_REQUEST_CONTENT_SIZE will have a relayout queued. | ||||
|  * | ||||
|  * Attached actors with other request modes are not redrawn. To redraw them | ||||
|  * too, use clutter_content_invalidate(). | ||||
|  */ | ||||
| void | ||||
| clutter_content_invalidate_size (ClutterContent *content) | ||||
| { | ||||
|   ClutterActor *actor; | ||||
|   GHashTable *actors; | ||||
|   GHashTableIter iter; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_CONTENT (content)); | ||||
|  | ||||
|   CLUTTER_CONTENT_GET_IFACE (content)->invalidate_size (content); | ||||
|  | ||||
|   actors = g_object_get_qdata (G_OBJECT (content), quark_content_actors); | ||||
|   if (actors == NULL) | ||||
|     return; | ||||
|  | ||||
|   g_hash_table_iter_init (&iter, actors); | ||||
|   while (g_hash_table_iter_next (&iter, (gpointer *) &actor, NULL)) | ||||
|     { | ||||
|       ClutterRequestMode request_mode; | ||||
|  | ||||
|       g_assert (actor != NULL); | ||||
|  | ||||
|       request_mode = clutter_actor_get_request_mode (actor); | ||||
|  | ||||
|       if (request_mode == CLUTTER_REQUEST_CONTENT_SIZE) | ||||
|         _clutter_actor_queue_only_relayout (actor); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /*< private > | ||||
|  * _clutter_content_attached: | ||||
|  * @content: a #ClutterContent | ||||
| @@ -242,7 +201,7 @@ clutter_content_invalidate_size (ClutterContent *content) | ||||
|  * is associated to a #ClutterContent, to set up a backpointer from | ||||
|  * the @content to the @actor. | ||||
|  * | ||||
|  * This function will invoke the #ClutterContentInterface.attached() virtual | ||||
|  * This function will invoke the #ClutterContentIface.attached() virtual | ||||
|  * function. | ||||
|  */ | ||||
| void | ||||
| @@ -276,7 +235,7 @@ _clutter_content_attached (ClutterContent *content, | ||||
|  * This function should be used internally every time a #ClutterActor | ||||
|  * removes the association with a #ClutterContent. | ||||
|  * | ||||
|  * This function will invoke the #ClutterContentInterface.detached() virtual | ||||
|  * This function will invoke the #ClutterContentIface.detached() virtual | ||||
|  * function. | ||||
|  */ | ||||
| void | ||||
| @@ -301,22 +260,19 @@ _clutter_content_detached (ClutterContent *content, | ||||
|  * _clutter_content_paint_content: | ||||
|  * @content: a #ClutterContent | ||||
|  * @actor: a #ClutterActor | ||||
|  * @node: a #ClutterPaintNode | ||||
|  * @paint_context: a #ClutterPaintContext | ||||
|  * @context: a #ClutterPaintNode | ||||
|  * | ||||
|  * Creates the render tree for the @content and @actor. | ||||
|  * | ||||
|  * This function will invoke the #ClutterContentInterface.paint_content() | ||||
|  * This function will invoke the #ClutterContentIface.paint_content() | ||||
|  * virtual function. | ||||
|  */ | ||||
| void | ||||
| _clutter_content_paint_content (ClutterContent      *content, | ||||
|                                 ClutterActor        *actor, | ||||
|                                 ClutterPaintNode    *node, | ||||
|                                 ClutterPaintContext *paint_context) | ||||
| _clutter_content_paint_content (ClutterContent   *content, | ||||
|                                 ClutterActor     *actor, | ||||
|                                 ClutterPaintNode *node) | ||||
| { | ||||
|   CLUTTER_CONTENT_GET_IFACE (content)->paint_content (content, actor, node, | ||||
|                                                       paint_context); | ||||
|   CLUTTER_CONTENT_GET_IFACE (content)->paint_content (content, actor, node); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -33,13 +33,24 @@ | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define CLUTTER_TYPE_CONTENT (clutter_content_get_type ()) | ||||
| #define CLUTTER_TYPE_CONTENT            (clutter_content_get_type ()) | ||||
| #define CLUTTER_CONTENT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_CONTENT, ClutterContent)) | ||||
| #define CLUTTER_IS_CONTENT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_CONTENT)) | ||||
| #define CLUTTER_CONTENT_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CLUTTER_TYPE_CONTENT, ClutterContentIface)) | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| G_DECLARE_INTERFACE (ClutterContent, clutter_content, CLUTTER, CONTENT, GObject) | ||||
| typedef struct _ClutterContentIface     ClutterContentIface; | ||||
|  | ||||
| /** | ||||
|  * ClutterContentInterface: | ||||
|  * ClutterContent: | ||||
|  * | ||||
|  * The #ClutterContent structure is an opaque type | ||||
|  * whose members cannot be acccessed directly. | ||||
|  * | ||||
|  * Since: 1.10 | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * ClutterContentIface: | ||||
|  * @get_preferred_size: virtual function; should be overridden by subclasses | ||||
|  *   of #ClutterContent that have a natural size | ||||
|  * @paint_content: virtual function; called each time the content needs to | ||||
| @@ -51,12 +62,12 @@ G_DECLARE_INTERFACE (ClutterContent, clutter_content, CLUTTER, CONTENT, GObject) | ||||
|  * @invalidate: virtual function; called each time a #ClutterContent state | ||||
|  *   is changed. | ||||
|  * | ||||
|  * The #ClutterContentInterface structure contains only | ||||
|  * The #ClutterContentIface structure contains only | ||||
|  * private data. | ||||
|  * | ||||
|  * Since: 1.10 | ||||
|  */ | ||||
| struct _ClutterContentInterface | ||||
| struct _ClutterContentIface | ||||
| { | ||||
|   /*< private >*/ | ||||
|   GTypeInterface g_iface; | ||||
| @@ -65,10 +76,9 @@ struct _ClutterContentInterface | ||||
|   gboolean      (* get_preferred_size)  (ClutterContent   *content, | ||||
|                                          gfloat           *width, | ||||
|                                          gfloat           *height); | ||||
|   void          (* paint_content)       (ClutterContent      *content, | ||||
|                                          ClutterActor        *actor, | ||||
|                                          ClutterPaintNode    *node, | ||||
|                                          ClutterPaintContext *paint_context); | ||||
|   void          (* paint_content)       (ClutterContent   *content, | ||||
|                                          ClutterActor     *actor, | ||||
|                                          ClutterPaintNode *node); | ||||
|  | ||||
|   void          (* attached)            (ClutterContent   *content, | ||||
|                                          ClutterActor     *actor); | ||||
| @@ -76,20 +86,18 @@ struct _ClutterContentInterface | ||||
|                                          ClutterActor     *actor); | ||||
|  | ||||
|   void          (* invalidate)          (ClutterContent   *content); | ||||
|  | ||||
|   void          (* invalidate_size)     (ClutterContent   *content); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| GType clutter_content_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| gboolean        clutter_content_get_preferred_size      (ClutterContent *content, | ||||
|                                                          gfloat         *width, | ||||
|                                                          gfloat         *height); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void            clutter_content_invalidate              (ClutterContent *content); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| void            clutter_content_invalidate_size         (ClutterContent *content); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_CONTENT_H__ */ | ||||
|   | ||||
| @@ -6,6 +6,42 @@ | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| typedef enum { | ||||
|   CLUTTER_DEBUG_MISC                = 1 << 0, | ||||
|   CLUTTER_DEBUG_ACTOR               = 1 << 1, | ||||
|   CLUTTER_DEBUG_TEXTURE             = 1 << 2, | ||||
|   CLUTTER_DEBUG_EVENT               = 1 << 3, | ||||
|   CLUTTER_DEBUG_PAINT               = 1 << 4, | ||||
|   CLUTTER_DEBUG_PANGO               = 1 << 5, | ||||
|   CLUTTER_DEBUG_BACKEND             = 1 << 6, | ||||
|   CLUTTER_DEBUG_SCHEDULER           = 1 << 7, | ||||
|   CLUTTER_DEBUG_SCRIPT              = 1 << 8, | ||||
|   CLUTTER_DEBUG_SHADER              = 1 << 9, | ||||
|   CLUTTER_DEBUG_MULTISTAGE          = 1 << 10, | ||||
|   CLUTTER_DEBUG_ANIMATION           = 1 << 11, | ||||
|   CLUTTER_DEBUG_LAYOUT              = 1 << 12, | ||||
|   CLUTTER_DEBUG_PICK                = 1 << 13, | ||||
|   CLUTTER_DEBUG_EVENTLOOP           = 1 << 14, | ||||
|   CLUTTER_DEBUG_CLIPPING            = 1 << 15, | ||||
|   CLUTTER_DEBUG_OOB_TRANSFORMS      = 1 << 16 | ||||
| } ClutterDebugFlag; | ||||
|  | ||||
| typedef enum { | ||||
|   CLUTTER_DEBUG_NOP_PICKING         = 1 << 0, | ||||
|   CLUTTER_DEBUG_DUMP_PICK_BUFFERS   = 1 << 1 | ||||
| } ClutterPickDebugFlag; | ||||
|  | ||||
| typedef enum { | ||||
|   CLUTTER_DEBUG_DISABLE_SWAP_EVENTS     = 1 << 0, | ||||
|   CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS = 1 << 1, | ||||
|   CLUTTER_DEBUG_REDRAWS                 = 1 << 2, | ||||
|   CLUTTER_DEBUG_PAINT_VOLUMES           = 1 << 3, | ||||
|   CLUTTER_DEBUG_DISABLE_CULLING         = 1 << 4, | ||||
|   CLUTTER_DEBUG_DISABLE_OFFSCREEN_REDIRECT = 1 << 5, | ||||
|   CLUTTER_DEBUG_CONTINUOUS_REDRAW       = 1 << 6, | ||||
|   CLUTTER_DEBUG_PAINT_DEFORM_TILES      = 1 << 7 | ||||
| } ClutterDrawDebugFlag; | ||||
|  | ||||
| #ifdef CLUTTER_ENABLE_DEBUG | ||||
|  | ||||
| #define CLUTTER_HAS_DEBUG(type)         ((clutter_debug_flags & CLUTTER_DEBUG_##type) != FALSE) | ||||
| @@ -43,9 +79,9 @@ extern guint clutter_pick_debug_flags; | ||||
| extern guint clutter_paint_debug_flags; | ||||
|  | ||||
| void    _clutter_debug_messagev         (const char *format, | ||||
|                                          va_list     var_args) G_GNUC_PRINTF (1, 0); | ||||
|                                          va_list     var_args); | ||||
| void    _clutter_debug_message          (const char *format, | ||||
|                                          ...) G_GNUC_PRINTF (1, 2); | ||||
|                                          ...); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -51,7 +51,9 @@ | ||||
|  * deformation algorithm. | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "clutter-build-config.h" | ||||
| #endif | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
| #include "clutter-deform-effect.h" | ||||
| @@ -147,7 +149,7 @@ clutter_deform_effect_set_actor (ClutterActorMeta *meta, | ||||
|       ClutterActor *old_actor = clutter_actor_meta_get_actor (meta); | ||||
|  | ||||
|       if (old_actor != NULL) | ||||
|         g_clear_signal_handler (&priv->allocation_id, old_actor); | ||||
|         g_signal_handler_disconnect (old_actor, priv->allocation_id); | ||||
|  | ||||
|       priv->allocation_id = 0; | ||||
|     } | ||||
| @@ -166,20 +168,18 @@ clutter_deform_effect_set_actor (ClutterActorMeta *meta, | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|                                     ClutterPaintContext    *paint_context) | ||||
| clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect) | ||||
| { | ||||
|   ClutterDeformEffect *self= CLUTTER_DEFORM_EFFECT (effect); | ||||
|   ClutterDeformEffectPrivate *priv = self->priv; | ||||
|   CoglHandle material; | ||||
|   CoglPipeline *pipeline; | ||||
|   CoglDepthState depth_state; | ||||
|   CoglFramebuffer *fb = | ||||
|     clutter_paint_context_get_framebuffer (paint_context); | ||||
|   CoglFramebuffer *fb = cogl_get_draw_framebuffer (); | ||||
|  | ||||
|   if (priv->is_dirty) | ||||
|     { | ||||
|       graphene_rect_t rect; | ||||
|       ClutterRect rect; | ||||
|       gboolean mapped_buffer; | ||||
|       CoglVertexP3T2C4 *verts; | ||||
|       ClutterActor *actor; | ||||
| @@ -195,8 +195,8 @@ clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|        */ | ||||
|       if (clutter_offscreen_effect_get_target_rect (effect, &rect)) | ||||
|         { | ||||
|           width = graphene_rect_get_width (&rect); | ||||
|           height = graphene_rect_get_height (&rect); | ||||
|           width = clutter_rect_get_width (&rect); | ||||
|           height = clutter_rect_get_height (&rect); | ||||
|         } | ||||
|       else | ||||
|         clutter_actor_get_size (actor, &width, &height); | ||||
| @@ -284,7 +284,6 @@ clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect, | ||||
|   /* enable depth testing */ | ||||
|   cogl_depth_state_init (&depth_state); | ||||
|   cogl_depth_state_set_test_enabled (&depth_state, TRUE); | ||||
|   cogl_depth_state_set_test_function (&depth_state, COGL_DEPTH_TEST_FUNCTION_LEQUAL); | ||||
|   cogl_pipeline_set_depth_state (pipeline, &depth_state, NULL); | ||||
|  | ||||
|   /* enable backface culling if we have a back material */ | ||||
|   | ||||
| @@ -92,24 +92,24 @@ struct _ClutterDeformEffectClass | ||||
|   void (*_clutter_deform7) (void); | ||||
| }; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| GType clutter_deform_effect_get_type (void) G_GNUC_CONST; | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_deform_effect_set_back_material (ClutterDeformEffect *effect, | ||||
|                                                          CoglHandle           material); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| CoglHandle      clutter_deform_effect_get_back_material (ClutterDeformEffect *effect); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_deform_effect_set_n_tiles       (ClutterDeformEffect *effect, | ||||
|                                                          guint                x_tiles, | ||||
|                                                          guint                y_tiles); | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_deform_effect_get_n_tiles       (ClutterDeformEffect *effect, | ||||
|                                                          guint               *x_tiles, | ||||
|                                                          guint               *y_tiles); | ||||
|  | ||||
| CLUTTER_EXPORT | ||||
| CLUTTER_AVAILABLE_IN_1_4 | ||||
| void            clutter_deform_effect_invalidate        (ClutterDeformEffect *effect); | ||||
|  | ||||
| G_END_DECLS | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user