1. 20 Jul, 2016 2 commits
    • Jonas Ådahl's avatar
      Use signals instead of onscreen framebuffer frame callbacks · 28a898a2
      Jonas Ådahl authored
      CoglFrameInfo is a frame info container associated with a single
      onscreen framebuffer. The clutter stage will eventually support drawing
      a stage frame with multiple onscreen framebuffers, thus needs its own
      frame info container.
      
      This patch introduces a new stage signal 'presented' and a accompaning
      ClutterFrameInfo and adapts the stage windows and past onscreen frame
      callbacks users to use the signal and new info container.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      28a898a2
    • Jonas Ådahl's avatar
      Introduce regional stage rendering · 566c28bd
      Jonas Ådahl authored
      Add support for drawing a stage using multiple framebuffers each making
      up one part of the stage. This works by the stage backend
      (ClutterStageWindow) providing a list of views which will be for
      splitting up the stage in different regions.
      
      A view layout, for now, is a set of rectangles. The stage window (i.e.
      stage "backend" will use this information when drawing a frame, using
      one framebuffer for each view. The scene graph is adapted to explictly
      take a view when painting the stage. It will use this view, its
      assigned framebuffer and layout to offset and clip the drawing
      accordingly.
      
      This effectively removes any notion of "stage framebuffer", since each
      stage now may consist of multiple framebuffers. Therefore, API
      involving this has been deprecated and made no-ops; namely
      clutter_stage_ensure_context(). Callers are now assumed to either
      always use a framebuffer reference explicitly, or push/pop the
      framebuffer of a given view where the code has not yet changed to use
      the explicit-buffer-using cogl API.
      
      Currently only the nested X11 backend supports this mode fully, and the
      per view framebuffers are all offscreen. Upon frame completion, it'll
      blit each view's framebuffer onto the onscreen framebuffer before
      swapping.
      
      Other backends (X11 CM and native/KMS) are adapted to manage a
      full-stage view. The X11 CM backend will continue to use this method,
      while the native/KMS backend will be adopted to use multiple view
      drawing.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      566c28bd
  2. 12 Apr, 2016 1 commit
  3. 15 Mar, 2014 1 commit
  4. 19 Sep, 2013 1 commit
  5. 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.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=692901
      b248941a
  6. 03 Sep, 2012 1 commit
  7. 22 Jun, 2012 1 commit
  8. 26 Jan, 2012 1 commit
    • Emmanuele Bassi's avatar
      stage: Add state tracking · 19ff11ac
      Emmanuele Bassi authored
      State changes on the Stage are currently deferred to the windowing
      system backends, but the code is generally the same, and it should
      be abstracted neatly inside the Stage class itself.
      
      There's also the extra caveat for backends that state changes on a
      Stage must also emit a ClutterEvent of type CLUTTER_STAGE_STATE, a
      requirement that needlessly complicates the backend code.
      19ff11ac
  9. 26 Sep, 2011 1 commit
  10. 20 Jun, 2011 2 commits
  11. 06 May, 2011 1 commit
  12. 11 Apr, 2011 2 commits
    • Robert Bragg's avatar
      stage: adds internal_get_active_framebuffer API · c739cb28
      Robert Bragg authored
      This adds an internal _clutter_stage_get_active_framebuffer function
      that can be used to get a pointer to the current CoglFramebuffer pointer
      that is in use, in association with a given stage.
      
      The "active" infix in the function name is there because we shouldn't
      assume that a stage will always correspond to only a single framebuffer
      so we aren't getting a pointer to a sole framebuffer, we are getting
      a pointer to the framebuffer that is currently in use/being painted.
      
      This API is now used for culling purposes where we need to check if we
      are currently painting an actor to a framebuffer that is offscreen, that
      doesn't correspond to the stage.
      c739cb28
    • Robert Bragg's avatar
      stage: Move _clutter_do_pick to clutter-stage.c · ec0b7814
      Robert Bragg authored
      This moves the implementation of _clutter_do_pick to clutter-stage.c and
      renames it _clutter_stage_do_pick. This function can be compared to
      _clutter_stage_do_update/redraw in that it prepares for and starts a
      traversal of a scenegraph descending from a given stage. Since it is
      desirable that this function should have access to the private state of
      the stage it is awkward to maintain outside of clutter-stage.c.
      
      Besides moving _clutter_do_pick this patch is also able to remove the
      following private state accessors from clutter-stage-private.h:
      _clutter_stage_set_pick_buffer_valid,
      _clutter_stage_get_pick_buffer_valid,
      _clutter_stage_increment_picks_per_frame_counter,
      _clutter_stage_reset_picks_per_frame_counter and
      _clutter_stage_get_picks_per_frame_counter.
      ec0b7814
  13. 07 Mar, 2011 2 commits
    • Robert Bragg's avatar
      Optimize culling by doing culling in eye-coordinates · 19b86229
      Robert Bragg authored
      This implements a variation of frustum culling whereby we convert screen
      space clip rectangles into eye space mini-frustums so that we don't have
      to repeatedly transform actor paint-volumes all the way into screen
      coordinates to perform culling, we just have to apply the modelview
      transform and then determine each points distance from the planes that
      make up the clip frustum.
      
      By avoiding the projective transform, perspective divide and viewport
      scale for each point culled this makes culling much cheaper.
      19b86229
    • Robert Bragg's avatar
      viewport: consistently use floats for viewports · 013b2433
      Robert Bragg authored
      OpenGL < 4.0 only supports integer based viewports and internally we
      have a mixture of code using floats and integers for viewports. This
      patch switches all viewports throughout clutter and cogl to be
      represented using floats considering that in the future we may want to
      take advantage of floating point viewports with modern hardware/drivers.
      013b2433
  14. 18 Feb, 2011 1 commit
    • Emmanuele Bassi's avatar
      Store the motion event deliver flag in ClutterStage · bc548dc8
      Emmanuele Bassi authored
      Once upon a time, the land of Clutter had a stage singleton. It was
      created automatically at initialization time and stayed around even
      after the main loop was terminated. The singleton was content in
      being all there was. There also was a global API to handle the
      configuration of the stage singleton that would affect the behaviour
      on other classes, signals and properties.
      
      Then, an evil wizard came along and locked the stage singleton in his
      black tower, and twisted it until it was possible to create new stages.
      These new stages were pesky, and didn't have the same semantics of the
      singleton: they didn't stay around when closed, or terminate the main
      loop on delete events.
      
      The evil wizard also started moving all the stage-related API from the
      global context into class-specific methods.
      
      Finally, the evil wizard cast a spell, and the stage singleton was
      demoted to creation on demand - and until somebody called the
      clutter_stage_get_default() function, the singleton remained in a limbo
      of NULL pointers and undefined memory areas.
      
      There was a last bit - literally - of information still held by the
      global API; a tiny, little flag that disabled per-actor motion events.
      The evil wizard added private accessors for it, and stored it inside the
      stage private structure, in preparation for a deprecation that would
      come in a future development cycle.
      
      The evil wizard looked down upon the land of Clutter from the height of
      his black tower; the lay of the land had been reshaped into a crucible
      of potential, and the last dregs of the original force of creation were
      either molted into new, useful shapes, or blasted away by the sheer fury
      of his will.
      
      All was good.
      bc548dc8
  15. 28 Jan, 2011 1 commit
    • Emmanuele Bassi's avatar
      Clean up crossing event synthesis code · 82d1e5a6
      Emmanuele Bassi authored
      Clutter should just require that the windowing system used by a backend
      adds a device to the stage when the device enters, and removes it from
      the stage when the device leaves; with this information, we can
      synthesize every crossing event and update the device state without
      other intervention from the backend-specific code.
      
      The generation of additional crossing events for actors that are
      covering the stage at the coordinates of the crossing event should be
      delegated to the event processing code.
      
      The x11 and win32 backends need to be modified to relay the enter and
      leave events from the windowing system.
      82d1e5a6
  16. 08 Nov, 2010 1 commit
  17. 21 Oct, 2010 2 commits