Commit Graph

8678 Commits

Author SHA1 Message Date
Emmanuele Bassi
526d0ea884 conformance: Add more tests
Add back some deprecated and general purpose API tests. These are the
ones that were written already pretty much conforming to the GTest API
and style, and thus require minimal porting.
2013-12-12 18:51:11 +00:00
Emmanuele Bassi
7ec337f26f conformance: Add actor tests
Port the ClutterActor tests to the test API, and ensure they run under
the new TAP harness.
2013-12-12 18:51:11 +00:00
Emmanuele Bassi
2a660fa298 Fully rework the conformance test suite
The current conformance test suite is suboptimal in many ways.

All tests are built into the same binary, which makes adding new tests,
builting tests, and running groups of tests much more awkward than it
needs to be. The first issue, especially, raises the bar of contribution
in a significant way, while the other two take their toll on the
maintainer. All of these changes were introduced back when we had both
Clutter and Cogl tests in tree, and because we were building the test
suite for every single change; since then, Cogl moved out of tree with
all its tests, and we build the conformance test suite only when running
the `check` make target.

This admittedly large-ish commit changes the way the conformance test
suite works, taking advantage of the changes in the GTest API and test
harness.

First of all, all tests are now built separately, using their own test
suite as defined by each separate file. All tests run under the TAP
harness provided by GTest and Automake, to gather a proper report using
the Test Anything Protocol without using the `gtester` harness and the
`gtester-report` script. We also use the Makefile rules provided by GLib
to vastly simplify the build environment for the conformance test suite.

On top of the changes for the build and harness, we also provide new API
for creating and running test suites for Clutter. The API is public,
because the test suite has to use it, but it's minimal and mostly
provides convenience wrappers around GTest that make writing test units
for Clutter easier.

This commit disables all tests in the conformance test suite, as well as
moving the data files outside of the tests/data directory; the next few
commits will re-establish the conformance test suite separately so we
can check that everything works in a reliable way.
2013-12-12 18:51:11 +00:00
Milo Casagrande
cee38c1672 [l10n] Updated Italian translation. 2013-12-12 09:36:01 +01:00
Robert Bragg
d4aed66821 Check for cogl-path as a separate package
In Cogl 1.17 libcogl-path has been split out from libcogl and now has
its own corresponding cogl-path-1.0 pkg-config file which we check for
during build configuration.

Note: this bumps the required cogl version up to 1.17.1
2013-12-11 18:53:44 +00:00
Daniel Mustieles
af446a6803 Updated Spanish translation 2013-12-09 16:05:11 +01:00
Emmanuele Bassi
ed2fdf85f6 gesture: Make threshold-trigger-edge public
When the threshold-trigger-edge property was introduced in
GestureAction, it was late in the cycle and I elected to keep it
private, given the fact that nobody was subclassing GestureAction
outside of Clutter itself.

These days, people are experimenting more with the GestureAction API, so
they will need access to the various knobs that control the class
default behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=710227
2013-12-05 15:20:39 +00:00
Lionel Landwerlin
b0227644ff gesture-action: set default edge value to NONE to restore initial behavior
https://bugzilla.gnome.org/show_bug.cgi?id=710229

https://bugzilla.gnome.org/show_bug.cgi?id=710227
2013-12-05 15:20:39 +00:00
Emmanuele Bassi
8cb326dc54 Explicitly set the trigger edge in GestureAction subclasses
Each GestureAction subclass has its own trigger edge handling, so we
want to be resilient in case of changes in the super-class.

https://bugzilla.gnome.org/show_bug.cgi?id=710227
2013-12-05 15:20:39 +00:00
Emmanuele Bassi
154ca6ef99 gesture: Clean up trigger edge accessors
Use G_GNUC_INTERNAL instead of the leading underscore, as we may make
the accessor functions public at some point. Also, clean up the
documentation.

https://bugzilla.gnome.org/show_bug.cgi?id=710227
2013-12-05 15:20:39 +00:00
Lionel Landwerlin
97724939c8 gesture-action: fix memory corruption
abcf1d589f introduced a crasher because
the 'point' variable points to a piece of memory that is being
reallocated by the begin_gesture (by a g_array_set_size) call 5 lines
before.

https://bugzilla.gnome.org/show_bug.cgi?id=710227
2013-12-05 14:42:21 +00:00
Owen W. Taylor
cbb9d1e062 ClutterStageCogl: Ignore a clip the size of the stage
If the clip region includes the entire stage, ignore it - we aren't
actually clipped.

https://bugzilla.gnome.org/show_bug.cgi?id=719901
2013-12-05 08:38:16 -05:00
Owen W. Taylor
97dcb108d0 ClutterStageCogl: Clip in the right coordinate system
Our clip coordinates are relative to the stage, not model-view
transformed. cogl_framebuffer_push_rectangle_clip() was accidentally
used instead of cogl_framebuffer_push_scissor_clip() when porting
to the framebuffer clip API.

https://bugzilla.gnome.org/show_bug.cgi?id=719900
2013-12-05 08:38:16 -05:00
Owen W. Taylor
a2551dfa60 ClutterStage: Don't add empty actors to the stage clip
Currently, if an actor with an empty paint volume is queued for redraw, it
will union in the box +0+0x1x1 to the stage clip bounds - avoid that
by special casing empty paint volumes.

https://bugzilla.gnome.org/show_bug.cgi?id=719747
2013-12-04 21:53:52 -05:00
Emmanuele Bassi
3fdee4efe9 docs: Fix syntax errors in annotations 2013-12-04 16:09:09 +00:00
Emmanuele Bassi
1d7f3260a6 conform: Run texture tests only on -m=slow
I don't want to remove them altogether, but they need to be ported to a
more reliable system, otherwise they end up failing at random depending
on the whims of the compositor and the windowing system.
2013-12-04 16:07:18 +00:00
Emmanuele Bassi
a64742f3e4 paint-node: Get the framebuffer from the root node
The PaintNode hierarchy should have the ability to retrieve the
current active framebuffer by itself, instead of asking Cogl using the
global state API.

In order to do this, we ask the root node of a PaintNode graph for the
active framebuffer. In the current, 1.x-compatibility mode we have two
potential root node types: ClutterRootNode, used by ClutterStage; and
ClutterDummyNode, used a local root for each actor. The former takes a
framebuffer as part of its construction; the latter takes the actor that
acts as the local top-level during the actor's paint sequence, which
means we can get the active framebuffer from the stage associated to the
actor.

By keeping track of the active framebuffer on the node themselves we can
drop the usage of cogl_get_draw_framebuffer() in their implementation.
2013-12-04 16:07:17 +00:00
Emmanuele Bassi
e619de20d8 text: Add a hacky fallback for the framebuffer
The text-cache conformance test breaks because ClutterText gets a paint
without an active framebuffer associated to the ClutterStage. Keep a
fallback while we investigate the issue.
2013-12-04 16:07:17 +00:00
Emmanuele Bassi
705640367a Use the non-deprecated Cogl clipping API
Cogl 1.18 deprecated the global clipping API in favour of the
per-framebuffer one, but since we're using the 2.0 API internally we
don't have access to the deprecated symbols any more.

This is pretty much a mechanical port for all the places where we're
still using the old 1.x API.
2013-12-04 16:07:17 +00:00
Emmanuele Bassi
1b45841414 actor: Add private getter for the active framebuffer
Instead of asking every internal user to get the stage and get the
active framebuffer from it, we can wrap it up ourselves, and do some
sanity checks as well.
2013-12-04 16:07:17 +00:00
Neil Roberts
00ef6e29ce Make test-clip friendly for people with only one mouse button
The various shapes can now be drawn by holding down modifier keys
instead of requiring a three-button mouse.

https://bugzilla.gnome.org/show_bug.cgi?id=719716
2013-12-04 16:06:20 +00:00
Florian Müllner
992f2ca7b5 input-device: Guard against double free
Dispose() may be called more than once, so calling g_free directly
on the device name is unsafe. Instead, use g_clear_pointer() to
make sure we don't attempt to free the memory again.

https://bugzilla.gnome.org/show_bug.cgi?id=719563
2013-11-29 15:56:48 +00:00
Owen W. Taylor
2e85269368 Don't queue redraws when reallocating actor that haven't moved
When support for implicit animation of actor position was added,
the optimization for not queueing when allocating an actor back
to the same location was lost. This optimization is important
since when we are hierarchically allocating down from the top of
the stage we constantly reallocate the actors at the top of the
hierarchy back to the same place.

https://bugzilla.gnome.org/show_bug.cgi?id=719368
2013-11-26 12:30:00 -05:00
Owen W. Taylor
0b536c02f9 Bind constraints: Don't force redraws on source relayout
When the source actor potentially changes size, that shouldn't
necessarily result in the target actor being redrawn - it should
be like when a child of a container is reallocated due to changes
in its siblings or parent - it should redraw only to the extent
that it is moved and resized. Privately export an internal function
from clutter-actor.c to allow getting this right.

https://bugzilla.gnome.org/show_bug.cgi?id=719367
2013-11-26 11:12:12 -05:00
Rui Matos
3cd9a70fea device-manager-evdev: Stop using deprecated libevdev API
Fixes compiler warnings with libevdev >= 0.4 and makes use of a new
function to set the clock id instead of doing the ioctl directly.

https://bugzilla.gnome.org/show_bug.cgi?id=712816
2013-11-21 19:34:15 +01:00
Rui Matos
05e6bcc666 device-manager-evdev: Fix a segfault on device removal
Master devices have a NULL sysfs path so use g_strcmp0 to handle them
without crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
7d8f72a60e device-manager-evdev: Unref devices on removal
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
ce1f8f1dd0 device-manager-xi2: Fix device instances leaking on removal
Don't add an extra reference when adding to the devices hash table. We
already own the initial reference.

https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
18b9384e66 input-device: Fix a GArray leak
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
507d8b1cef input-device: Use g_clear_pointer
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
1d11cc324e device-manager: Don't emit device-removed with a finalized instance
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Emmanuele Bassi
45f30d221f New release cycle, new interface age 2013-11-21 13:23:00 +00:00
Emmanuele Bassi
492291d629 Bump up the dependency on Cogl 2013-11-21 13:22:59 +00:00
Emmanuele Bassi
09c06d08ca docs: Remove mentions of XFixes dependency
Clutter does not use nor depend on XFixes any more.
2013-11-21 13:22:59 +00:00
Piotr Drąg
6dee60a7db Updated POTFILES.in 2013-11-21 01:01:47 +01:00
Jasper St. Pierre
a427c120c2 stage: Remove the pick buffer caching
Since the journal is flushed on context switches, trying to use a cached
buffer means that we will use glReadPixels when picking, which isn't what
we want. Instead, always use a clipped draw, and remove the logic for
caching the pick buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=712563
2013-11-19 11:21:14 -05:00
Jasper St. Pierre
9082ccc30b stage: Fix indentation in pick methods
https://bugzilla.gnome.org/show_bug.cgi?id=712563
2013-11-19 11:21:14 -05:00
Emmanuele Bassi
7af55d23e4 Deprecate ClutterTableLayout
The table layout manager has various issues:

  • no support for RTL flipping
  • most of the layout API is legacy, and has been replaced by the
    alignment and expansion flags on ClutterActor
  • the animation API is legacy, and has been replaced by the
    implicitly animatable allocation
  • the spanning cells handling is a bit awkward, as is its API

On top of that, we imported the grid layout management policy from GTK+
into ClutterGridLayout, which provides all the required features in a
more well-designed API.

Instead of wasting time and resources updating TableLayout, we should
deprecate it and point developers of the GridLayout.
2013-11-19 00:31:53 +00:00
Emmanuele Bassi
56b579248e Update symbols file 2013-11-19 00:31:53 +00:00
Neil Roberts
70292672c4 Add API to install an event filter
This adds clutter_event_add/remove_filter which adds a callback
function which will receive all Clutter events just before the event
signal is emitted for them. The event filter will be invoked
regardless of any grabs or captures. This will be used by Mutter which
wants to access the events at a lower level then the event bubbling
mechanism. It needs to see all mouse motion events even if there is a
grab in place.

https://bugzilla.gnome.org/show_bug.cgi?id=707560
2013-11-14 14:32:17 -05:00
Jasper St. Pierre
c2b0b9aace input-device-xi2: Calculate the correct state for button events
The state that the X server sends for button events, by specification,
contains the button state before the event. We need to synthesize in
the result of the event in order to determine what the current button
state is.

https://bugzilla.gnome.org/show_bug.cgi?id=712322
2013-11-14 14:30:30 -05:00
Jasper St. Pierre
0fda81feab Remove use of XFixes for showing/hiding the cursor
XFixesShowCursor / XFixesHideCursor does not actually take the suppled
window argument into account -- the effect is actually global. Use
XDefineCursor instead.

https://bugzilla.gnome.org/show_bug.cgi?id=707071
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
98e03fc03f device-manager-xi2: Clamp coordinates of events to the stage coordinates
The X server can sometimes send us coordinates in the negatives or above
our window in extreme cases. Ensure that the user never sees this.
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
1de024b5fa device-manager-xi2: Don't divide by the scale factor twice
The coordinates we pass into translate_axes are already scaled.
2013-11-14 18:34:40 +00:00
Bastian Winkler
354c3c7977 interval: Call g_object_set_property in set_custom_property()
Otherwise it would prevent potential subclasses of ClutterInterval from
having own scriptable properties.
2013-11-14 18:34:40 +00:00
Bastian Winkler
e56785501b interval: Implement ClutterScriptable interface
This allows the creation of ClutterTransition objects in ClutterScript:
 {
   "id" : "scripted-transition",
   "type" : "ClutterPropertyTransition",
   "property-name" : "background-color",
   "interval" : {
     "type" : "ClutterInterval",
     "value-type" : "ClutterColor",
     "initial" : "red",
     "final" : "blue"
   }
 }
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
46c22de01e stage: Destroy all children when we dispose
Destroying an actor is supposed to destroy all of its children, so
it makes sense to reason that destroying the stage should destroy all
of its children, too.

Unfortunately, it seems that the stage removed all of its children
without destroying them before chaining up to what would destroy all
of its children, for whatever reason. Change this to a destroy so
resources get cleaned up.
2013-11-14 18:34:40 +00:00
Lionel Landwerlin
f70eee0748 drag-action: don't mix touch and pointer events
https://bugzilla.gnome.org/show_bug.cgi?id=709762
2013-11-14 18:34:40 +00:00
Jonas Ådahl
7c2b88f73b wayland: Implement support for 'cursor-visible' stage property
This will allow clutter Wayland clients to either not draw any pointer
cursor or draw its own.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=709590
2013-11-14 18:34:40 +00:00
Emmanuele Bassi
ef7ad913da Bump up version to 1.17.1 2013-11-14 18:34:39 +00:00