1. 15 Sep, 2015 1 commit
    • Lionel Landwerlin's avatar
      master-clock-default: prevent deadlock with GLX_INTEL_swap_event · 6c7f624f
      Lionel Landwerlin authored
      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] : 5733ad58
  2. 03 Mar, 2015 1 commit
    • Emmanuele Bassi's avatar
      Drop the UProf dependency · 25329280
      Emmanuele Bassi authored
      Nobody has been compiling Clutter with profiling enabled in a long time.
      UProf itself hasn't been updated in 5 years, and it still depends on
      deprecated components like dbus-glib, with no port to GDBus in sight.
      The profiling code was moderately useful in the past, but these days
      it's probably better to profile Cogl than Clutter itself; timing
      information can be extracted by the timestamp on each diagnostic message
      that is now available by default in the CLUTTER_NOTE macro, and we can
      add ad hoc counters where needed.
  3. 17 Feb, 2015 1 commit
  4. 03 Jan, 2015 1 commit
    • Emmanuele Bassi's avatar
      WARNING: Massive revert commit · 77ec8774
      Emmanuele Bassi authored
      Revert all the work that happened on the master branch.
      Sadly, this is the only way to merge the current development branch back
      into master.
      It is now abundantly clear that I merged the 1.99 branch far too soon,
      and that Clutter 2.0 won't happen any time soon, if at all.
      Since having the development happen on a separate branch throws a lot of
      people into confusion, let's undo the clutter-1.99 → master merge, and
      move back the development of Clutter to the master branch.
      In order to do so, we need to do some surgery to the Git repository.
      First, we do a massive revert in a single commit of all that happened
      since the switch to 1.99 and the API version bump done with the
      89a2862b commit. The history is too long
      to be reverted commit by commit without being extremely messy.
  5. 19 May, 2014 1 commit
  6. 14 Apr, 2014 1 commit
  7. 05 Apr, 2013 1 commit
  8. 13 Feb, 2013 1 commit
    • Owen W. Taylor's avatar
      Add clutter_stage_set_sync_delay() · b248941a
      Owen W. Taylor authored
      New experimental API is added to allow changing the way that redraws
      are timed for a stage to include a "sync delay" - a period after
      the vertical blanking period where Clutter simply waits for updates.
      In detail, the algorithm is that when the master clock is restarted
      after drawing a frame (in the case where there are timelines running)
      or started fresh in response to a queued redraw or relayout, the
      start is scheduled at the next sync point (sync_delay ms after the
      predicted vblank period) rather than done immediately.
  9. 11 Jul, 2012 1 commit
    • Emmanuele Bassi's avatar
      Deprecate clutter_threads_enter()/leave() · 0e4c6d0a
      Emmanuele Bassi authored
      Acquiring the Clutter lock to mark critical sections is not portable,
      and not recommended to implement threaded applications with Clutter.
      The recommended pattern is to use worker threads, and schedule UI
      updates inside idle or timeout handlers within the main loop. We should
      enforce this pattern by deprecating the threads_enter()/leave()
      functions. For compatibility concerns, we need internal API to acquire
      the main lock during frame processing dispatch.
  10. 13 Mar, 2012 1 commit
  11. 06 Mar, 2012 3 commits
    • Emmanuele Bassi's avatar
      master-clock: Add frame budget diagnostic messages · c2e77041
      Emmanuele Bassi authored
      Let's keep a budget of 16.6 milliseconds per frame, and reduce it by the
      amount of time spent in each phase of the frame processing. If any phase
      goes over the allocated budget then we use the diagnostic mode
      facilities to warn the app developer.
    • Emmanuele Bassi's avatar
      master-clock: Clean up the frame processing · bdf9f495
      Emmanuele Bassi authored
      Split out every phase into its own function, to ensure that the sequence
      of operation is clear and easy to follow.
    • Emmanuele Bassi's avatar
      Improve repaint functions · 22960746
      Emmanuele Bassi authored
      It is sometimes useful to be able to have better control on when a
      repaint function is called. Currently, all repaint functions are called
      prior to the stages update phase of the frame processing.
      We can introduce flags to represent the point in the frame update
      process in which we wish Clutter called the repaint function.
      As a bonus, we can also add a flag that causes adding a repaint function
      to spin the master clock.
  12. 09 Feb, 2012 1 commit
    • Emmanuele Bassi's avatar
      Mark internal symbol as private · 910b09d7
      Emmanuele Bassi authored
      A bunch of private symbols have escaped into the SO; let's rectify this
      situation by using the '_' private prefix, or making them static as they
      should have been.
  13. 14 Nov, 2011 1 commit
  14. 17 Oct, 2011 1 commit
  15. 23 Sep, 2011 1 commit
  16. 17 Nov, 2010 2 commits
    • Emmanuele Bassi's avatar
      Start using the monotonic API in GLib ≥ 2.27 · 8f60d5a3
      Emmanuele Bassi authored
      Starting from the 2.27 cycle, GLib is exposing a monotonic clock with
      microseconds granularity throughout the time-based API. We can start
      using it, given that the old, non-monotonic version is going to be
      deprecated by the same cycle.
    • Emmanuele Bassi's avatar
      Move away from GTimeVal · 68d7a5e8
      Emmanuele Bassi authored
      GLib 2.28 will deprecate GTimeVal and related API in favour of
      standardizing on microseconds granularity for all time-based API.
      Clutter should switch too.
      All of the current users of GTimeVal convert to milliseconds when
      doing time operations, and use GTimeVal only as storage. This can
      effectively be replaced by a gint64.
      The Master Clock uses a microsecond resolution, except when interacting
      with the main loop itself, since the main loop has a millisecond
      resolution - at least until Ryan Lortie manages to switch that too to
      microseconds on Linux.
      The clutter_timeline_do_tick() function was erroneously not privatized,
      but it was still assumed to be private; we should just remove it from
      the public symbols.
  17. 21 Oct, 2010 2 commits
  18. 18 Oct, 2010 1 commit
  19. 07 Jun, 2010 1 commit
  20. 15 Feb, 2010 1 commit
  21. 09 Feb, 2010 1 commit
    • Robert Bragg's avatar
      glx backend: Adds support for GLX_INTEL_swap_event · 5d702853
      Robert Bragg authored
      If your OpenGL driver supports GLX_INTEL_swap_event that means when
      glXSwapBuffers is called it returns immediatly and an XEvent is sent when
      the actual swap has finished.
      Clutter can use the events that notify swap completion as a means to
      throttle rendering in the master clock without blocking the CPU and so it
      should help improve the performance of CPU bound applications.
  22. 08 Feb, 2010 1 commit
    • Neil Roberts's avatar
      clutter-master-clock: Don't wait for a frame if time goes backwards · 24338a75
      Neil Roberts authored
      If we aren't syncing to vblank or if the last dispatch didn't cause a
      redraw then the master clock will try to wait at least a small amount
      of time before dispatching again. However if time goes backwards then
      it would not do a dispatch until time catches up again. To fix this it
      know just runs a dispatch immediately if time goes backwards.
      This is related to Moblin bug #3839. There was a similar fix for this
      in 9dc012c0, however that only fixed the case where timelines
      wouldn't update. If there are no animations running then the master
      clock won't even try updating timelines until time catches up.
  23. 21 Jan, 2010 1 commit
    • Emmanuele Bassi's avatar
      master clock: Improve the timeline advancement protection · a545f66a
      Emmanuele Bassi authored
      The commit 1c69c617 which improved the
      protection against timeline removals during the master clock advancement
      was only doing half the job - and actually broke the chaining of
      animations inside the ::completed signal.
      We cannot simply take a reference on the timelines and still use the list
      held by the master clock because the do_tick() might result in the
      creation of a new timeline, which gets added at the end of the list with
      no reference increase and thus gets disposed at the end of the iteration.
      We also cannot steal the master clock timelines list because a timeline
      might be removed as the direct result of do_tick() and remove_timeline()
      would not find the timeline, failing and leaving a dangling pointer
      For this reason we copy the list of timelines out of the one that the
      Master Clock holds, take a reference on each timeline, advance them all,
      release the reference and free the list.
  24. 20 Jan, 2010 1 commit
    • Emmanuele Bassi's avatar
      Move all picking-related operations inside InputDevice · 9506510d
      Emmanuele Bassi authored
      The InputDevice objects stores pointer coordinates, state, stage and
      the actor under the cursor, so if the current backend provides us with
      one attached to the Event structure then we want the InputDevice itself
      to update its state and give us the ClutterActor underneath the
      pointer's cursor.
  25. 14 Jan, 2010 1 commit
    • Emmanuele Bassi's avatar
      master-clock: Add profiling timers · 4388509a
      Emmanuele Bassi authored
      Use the newly-added profiling timers inside the master clock dispatch
      function to see how much time we spend:
        • in the whole function
          • in the event processing for each stage
          • in the timeline advancement
  26. 04 Jan, 2010 1 commit
  27. 10 Jul, 2009 1 commit
    • Robert Bragg's avatar
      ensure next iteration · 211bf798
      Robert Bragg authored
      Added an internal clutter function, _clutter_master_clock_ensure_next_iteration
      that ensures another iteration of the master clock, can be called from repaint
      functions as well as other threads.
  28. 29 Jun, 2009 1 commit
  29. 22 Jun, 2009 1 commit
  30. 10 Jun, 2009 1 commit
  31. 09 Jun, 2009 6 commits