summaryrefslogtreecommitdiff
path: root/clutter
Commit message (Collapse)AuthorAgeFilesLines
...
* evdev: Pass a motion delta to pointer constrain callbackJonas Ådahl2016-02-162-1/+6
| | | | | | | | | | The constrain callback cannot rely on the pointer position of the corresponding ClutterInputDevice to get the actual delta of the motion event that is to be constrained since it is only updated when an event is dispatched. So change the API to pass the previous pointer position when constraining. https://bugzilla.gnome.org/show_bug.cgi?id=752752
* evdev: Expose microsecond timestamps via the clutter evdev APIJonas Ådahl2016-02-164-0/+44
| | | | | | This is needed by Wayland compositors for certain types of events. https://bugzilla.gnome.org/show_bug.cgi?id=752752
* evdev: Use microsecond granularity for internal timestampsJonas Ådahl2016-02-161-69/+99
| | | | | | | It's what libinput uses internally, and it'll be exposed in a later patch. https://bugzilla.gnome.org/show_bug.cgi?id=752752
* evdev: Provide the relative pointer motion event deltasJonas Ådahl2016-02-164-15/+110
| | | | | | | | Compositors need more detailed information about motion events. Make it possible to retrieve this information when running the evdev backend by adding the information to the backend specific event struct. https://bugzilla.gnome.org/show_bug.cgi?id=752752
* evdev: Recycle device ids after devices are removedJonas Ådahl2016-02-163-17/+86
| | | | | | | In order to not grow the device id number forever, recycle the ids whenever a device is released. https://bugzilla.gnome.org/show_bug.cgi?id=755849
* gdk: Enable swap throttling on full screen windowsEmmanuele Bassi2016-01-251-0/+22
| | | | | | | | | | | | | | | | | | | | | Since commit 6183eb363282e5143bfd52aa36b5e6a318c4c992 we disabled swap throttling in favour of being driven by the GDK frame clock (and thus by the compositor). Compositors may decide to unredirect full screen windows to avoid the performance penalty of the additional copy, especially on X11, which means that a Clutter application marked as full screen is not going to be driven by the compositor, and it's not going to be throttled by the underlying GL machinery. This has a performance impact on constrained platforms. For this reason, we should re-enable swap throttling when the window is full screen. As the change was introduced especially because of Wayland, we should check that we're not running as clients under a Wayland compositor; if we do, we always keep swap throttling disabled, as the compositor will always manage our output, even when full screen.
* evdev: Add scroll source/finish flags info to scroll events.Carlos Garnacho2016-01-141-14/+51
| | | | | | Libinput tells us this much, so make use of it. https://bugzilla.gnome.org/show_bug.cgi?id=757026
* clutter-event: Add scroll source enum and axis scroll flagsCarlos Garnacho2016-01-143-0/+88
| | | | | | | | | | Those can be used to implement different scrolling behaviors. The fields have been added to ClutterScrollEvent itself. According to pahole, this makes the struct as big as ClutterButtonEvent and ClutterTouchEvent, so already at the limit of the ClutterEvent union. https://bugzilla.gnome.org/show_bug.cgi?id=757026
* egl: Rename backend constructor functionEmmanuele Bassi2015-12-111-1/+1
| | | | Otherwise the build will fail.
* Allow setting the default backend from the configuration fileEmmanuele Bassi2015-12-113-0/+20
| | | | | | | | | | We should allow a configuration file to set up the initial state of the global state, which also implies being able to set the backend. If the allowed backends have already been set programmatically via the clutter_set_windowing_backend(), though, then the application code takes precedence, as we assume that the application author knows better than us what their code supports or requires.
* Read the config file when creating the global shared stateEmmanuele Bassi2015-12-111-6/+6
| | | | | | | The configuration file should set up the global state before we initialize it; instead of relying on implicit ordering, explicitly read the configuration file once, when creating the global shared context data structure.
* backend: Ensure that Cogl drivers are set prior to initializationEmmanuele Bassi2015-12-111-0/+6
| | | | | It doesn't make sense for the allowed drivers to be changed after Clutter has been initialized.
* backend: Allow setting a list of windowing backendsEmmanuele Bassi2015-12-111-43/+93
| | | | | | | | | | | Like CLUTTER_DRIVER, we want to allow users to specify a list of backends to test, and fall back to the internally defined priority as a default. This requires changing the way the allowed backend string is parsed, both for the CLUTTER_BACKEND environment variable and for the clutter_set_windowing_backend() function. Existing callers are still supported with the exact same semantics.
* Add internal constructor function for each backendEmmanuele Bassi2015-12-1114-21/+67
| | | | | We're going to use it to create an instance of each backend without using the get_type() function.
* Allow overriding the list of Cogl drivers via configuration fileEmmanuele Bassi2015-12-103-1/+19
| | | | | Clutter has a configuration file that can be used to override various settings, including the ones from environment variables.
* Add a configuration option for deciding the Cogl drivers to useEmmanuele Bassi2015-12-101-1/+1
| | | | | | | | | | Using environment variables only is not convenient for all platforms, and in some cases it's beneficial to decide the default driver when building Clutter. Cogl already has a similar configuration switch, and since Clutter is overriding the default Cogl behaviour, it should offer the same mechanism. https://bugzilla.gnome.org/show_bug.cgi?id=742678
* backend: Allow overriding the Cogl drivers chainEmmanuele Bassi2015-12-101-23/+56
| | | | | | | | | | | | | | | | | | We have an hardcoded list of drivers we have to go through when creating a Cogl context. Some platforms may expose those drivers, but not be the preferred ones. In order to allow users and system integrators to override the list of drivers, we should crib the same approach used by GDK, and have an environment variable with a list of drivers to try. The new environment variable is called `CLUTTER_DRIVER` and accepts a comma-separated list of driver names, which will be tested in sequence until one succeeds. There's also an additional '*' token which is used to ask Clutter to fall back to the internally defined preferred list of drivers. https://bugzilla.gnome.org/show_bug.cgi?id=742678
* Fix annotation for bind_model()Emmanuele Bassi2015-12-091-1/+1
| | | | | The (optional) annotation should only be used for (out) arguments; in arguments that can be NULL should use the (nullable) annotation.
* Fix definition of ClutterEventExtenderEmmanuele Bassi2015-12-091-0/+2
| | | | | The interface vtable structure is missing the GTypeInterface parent, and GObject is complaining about it, as it should.
* gdk: Check for both GDK and Cogl winsys supportEmmanuele Bassi2015-12-081-3/+3
| | | | | | When using GDK and Cogl API, we need to check that both GDK and Cogl have been built with support for that API, otherwise the build will likely fail.
* evdev: Drop redundant stage set checkJonas Ådahl2015-12-031-5/+0
| | | | | | | Every path creating a input device in the evdev backend sets a stage, so the check is unnecessary. https://bugzilla.gnome.org/show_bug.cgi?id=752752
* text: Enforce boolean valueEmmanuele Bassi2015-11-301-0/+2
| | | | | | We store the cursor-visible value in a bit field, which means that we need to enforce the argument for the setter to either 0 or 1 in order to fit.
* docs: Improve documentation for ClutterTextEmmanuele Bassi2015-11-301-3/+8
| | | | Ensure that the rule for :cursor-visible are documented.
* text: Unify conditions for visible cursorEmmanuele Bassi2015-11-301-12/+6
| | | | | We have a bunch of similar checks in various places, and they should all be coalesced into one.
* text: Allow selectability without editabilityEmmanuele Bassi2015-11-281-70/+75
| | | | | | | | | | | | | | | | | | | | | | | Being able to select text and being able to edit text are two separate capabilities, but ClutterText only allows the former with the latter. The ClutterText:selectable property is set to TRUE by default, given that it depends on the :editable property; this implies that all ClutterText instances now are going to show a cursor as soon as they get key focused. Obviously, this would make labels look a bit off — but if you have a label then you would not give it key focus, either by explicitly calling clutter_actor_grab_focus(), or by setting it as reactive and allowing it to be clicked. If this turns out to be a problem, we have various ways to avoid showing a cursor — for instance, we could change the default value of the selectable property, and ensure that setting the :editable property to TRUE would also set the :selectable property as a side effect. Or we could hide the cursor until the first button/touch press event. Finally, we could always back this commit out if it proves to be too much of a breakage for existing code bases. https://bugzilla.gnome.org/show_bug.cgi?id=757470
* gdk: take into account scaling on waylandLionel Landwerlin2015-11-221-20/+30
| | | | | | | | The X11 part of the GDK backend takes into account the scaling factor of its window when resizing the underlying X11 objects. We need to do the same for Wayland. https://bugzilla.gnome.org/show_bug.cgi?id=755245
* gdk: Implement ClutterEventExtenderCarlos Garnacho2015-11-182-26/+36
| | | | | | This lifts the responsibility off its ClutterBackend. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* x11: Implement ClutterEventExtenderCarlos Garnacho2015-11-182-26/+34
| | | | | | This lifts the responsibility off its ClutterBackend. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* evdev: Set event code on button/key eventsCarlos Garnacho2015-11-181-0/+3
| | | | | | | This will allow users to know the event code without strange calculations on event->key.hardware_keycode or event->button.button. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* evdev: Allow to retrieve the input.h event code from ClutterEventsCarlos Garnacho2015-11-185-0/+123
| | | | | | | | This is now stored as platform data in the ClutterEvent, so can be retrieved with the clutter_evdev_event_get_event_code() call that's been added to the evdev backend. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* evdev: Implement the ClutterEventExtender interfaceCarlos Garnacho2015-11-181-3/+28
| | | | | | | This will allow the ClutterDeviceManagerEvdev to define evdev-specific event data. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* backend: Bridge platform-dependent event data creation to device managersCarlos Garnacho2015-11-181-2/+18
| | | | | | | | Device managers can now implement the ClutterEventExtender interface that allows them to set their own data to events, make the backend call those implementations if the device manager implements the interface. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* device-manager: Add private interface to manipulate platform event dataCarlos Garnacho2015-11-182-0/+29
| | | | | | | | | | | This normally belonged to the ClutterBackend, however there's device managers (eg. evdev) that are somewhat detached from the backend, so need to bridge this somehow. This allows device managers to implement these bits that were usually responsibility of the ClutterBackend. https://bugzilla.gnome.org/show_bug.cgi?id=758238
* Add version macros for Clutter 1.26Emmanuele Bassi2015-11-182-0/+28
|
* evdev: Move additional pointer buttons after the old 4-7 scrolling onesCarlos Garnacho2015-11-171-2/+3
| | | | | | | | On X11 those were skipped, so additional pointer buttons would come up as button >= 8 events. Do here the same, so we remain compatible across backends. https://bugzilla.gnome.org/show_bug.cgi?id=758237
* evdev: Mark either of smooth/discrete scroll events as emulatingCarlos Garnacho2015-10-231-7/+16
| | | | | We're always emulating one of those, depending on the scrolling device/source, so mark these as such.
* click-action: Ignore motions/updates from different devices/sequencesCarlos Garnacho2015-10-171-0/+4
| | | | | | | Otherwise events from other devices or touch sequences might unintendedly trigger the thresholds, and a "cancelled" ::long-press with it. https://bugzilla.gnome.org/show_bug.cgi?id=756749
* Use explicit NULL comparison for pointersEmmanuele Bassi2015-10-121-11/+11
| | | | Following the coding style.
* evdev: Emulate discrete scroll events out of smooth scroll ones.Carlos Garnacho2015-10-121-8/+122
| | | | | | | | | | | | | | | | There's handlers around relying on up/down/left/right scroll events, which won't work as expected if only smooth scroll events are sent. In order to work properly there, we have to retrofit discrete scroll events on the evdev backend. Fix this by implementing emission (on devices with a wheel) and emulation (on anything else) of discrete scroll events. On the former both smooth and discrete events are set, for the latter we do accumulate the dx/dy of the latest scroll events, and emit discrete ones when we accumulated enough. The ending 0/0 event will reset the accumulators for the next scrolling batch. https://bugzilla.gnome.org/show_bug.cgi?id=756284
* clutter_actor_update_map_state: Remove a useless warningOwen W. Taylor2015-10-011-4/+0
| | | | | | | A check for priv->parent == NULL was inside the else of a check for (priv->parent == NULL). https://bugzilla.gnome.org/show_bug.cgi?id=745517
* _clutter_actor_set_enable_paint_unmapped: don't force an unmapOwen W. Taylor2015-10-011-1/+1
| | | | | | | | | When enable_paint_unmapped is disabled, we shouldn't force the source widget to be unmapped if the constraints would keep it mapped; in practice this shouldn't matter unless a paint handler is messing with the map state. https://bugzilla.gnome.org/show_bug.cgi?id=745517
* Avoid crashing when an actor not parented to a toplevel is clonedOwen W. Taylor2015-09-292-4/+14
| | | | | | | If we can't realize the source actor for a clone, simply skip updating the map state and painting it. https://bugzilla.gnome.org/show_bug.cgi?id=745517
* gdk: Enable clock updates when timelines are added to the clockLionel Landwerlin2015-09-221-2/+51
| | | | | | | | | Enable animation updates from the GdkFrameClock whenever any timeline is added to the ClutterMasterClockGdk. This may improve animation smoothness (depending on the GDK backend in use) because it allows GDK to tweak its frame timing for animation purposes. https://bugzilla.gnome.org/show_bug.cgi?id=755357
* gdk: Fix frame budget diagnosticsPhilip Withnall2015-09-211-0/+4
| | | | | | | Set the frame budget so that CLUTTER_ENABLE_DIAGNOSTIC correctly outputs timing diagnostics from the ClutterMasterClockGdk. https://bugzilla.gnome.org/show_bug.cgi?id=755357
* gdk: Use frame time when calculating the tick time for clock updatesPhilip Withnall2015-09-211-1/+1
| | | | | | | | This is how GdkFrameClock is meant to be used: the frame time is meant to be queried from the GdkFrameClock within its frame signals, rather from the system monotonic time source. https://bugzilla.gnome.org/show_bug.cgi?id=755357
* timeline: Add more debug outputPhilip Withnall2015-09-211-2/+22
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=755357
* timeline: Ensure waiting_first_tick is set before adding the timelinePhilip Withnall2015-09-211-1/+1
| | | | | | | Just in case the timeline starts being prodded by the ClutterMasterClock before the add function returns. (This has not been verified.) https://bugzilla.gnome.org/show_bug.cgi?id=755357
* cogl: reset pending swaps counter on unrealizeLionel Landwerlin2015-09-151-0/+2
| | | | | | | | When removing the frame callback on the CoglOnscreen, we loose the ability to get notified of swap events. This could leave us with a counter != 0 which leads to a deadlock situation after the next realize/draw cycle. https://bugzilla.gnome.org/show_bug.cgi?id=755014
* x11: stage window: reset framebuffer on foreign window unrealizeLionel Landwerlin2015-09-156-33/+45
| | | | | | | Similarly to 13dbb74c81bec861d3a135fb53966ae5562831a7, we need to reset the framebuffer in the x11 for foreign windows. https://bugzilla.gnome.org/show_bug.cgi?id=755014
* master-clock-default: prevent deadlock with GLX_INTEL_swap_eventLionel Landwerlin2015-09-151-7/+13
| | | | | | | | | | | | | | | | | If we call _clutter_stage_do_update() on a ClutterStage that isn't mapped/visible, no GL command will be queued, and the Mesa/DRI2 implementation of SwapBuffers will do nothing. This causes GLX_INTEL_swap_event to not be emitted by the X server because no swapping has been requested through DRI2 and it eventually leads to a deadlock situation in ClutterStageCogl because we're waiting for an event before we start the next draw cycle. This patch removes the non mapped stages from the list of stages to process. This is consistent with a previous patch for the ClutterMasterClockGdk [1]. [1] : 5733ad58e5a3989f5cb836d42a1cebf3884e7c36 https://bugzilla.gnome.org/show_bug.cgi?id=755014