1. 26 Jul, 2011 6 commits
    • Emmanuele Bassi's avatar
      Post-release version bump to 1.7.7 · fdba5692
      Emmanuele Bassi authored
      fdba5692
    • Emmanuele Bassi's avatar
      Release Clutter 1.7.6 (snapshot) · 0a008b98
      Emmanuele Bassi authored
      0a008b98
    • Emmanuele Bassi's avatar
    • Emmanuele Bassi's avatar
      78049c38
    • Emmanuele Bassi's avatar
      cairo-texture: Deprecate create()/create_region() · 278daca6
      Emmanuele Bassi authored
      The recommended way of drawing on a ClutterCairoTexture is the ::draw
      signal.
      278daca6
    • Emmanuele Bassi's avatar
      cairo-texture: Use signal-based drawing · 2f445682
      Emmanuele Bassi authored
      The current "create context/draw/destroy context" pattern presents
      various problems. The first issue is that it defers memory management to
      the caller of the create() or create_region() methods, which makes
      bookkeeping of the cairo_t* harder for language bindings and third party
      libraries. The second issue is that, while it's easier for
      draw-and-forget texturs, this API is needlessly complicated for contents
      that have to change programmatically - and it introduces constraints
      like calling the drawing code explicitly after a surface resize (e.g.
      inside an allocate() implementation).
      
      By using a signal-based approach we can make the CairoTexture actor
      behave like other actors, and like other libraries using Cairo as their
      2D drawing API.
      
      The semantics of the newly-introduced ::draw signal are the same as the
      one used by GTK+:
      
        - the signal is emitted on invalidation;
        - the cairo_t* context is owned by the actor;
        - it is safe to have multiple callbacks attached to the same
          signal, to allow composition;
        - the cairo_t* is already clipped to the invalidated area, so
          that Cairo can discard geometry immediately before we upload
          the texture data.
      
      There are possible future improvements, like coalescing multiple
      invalidations inside regions, and performing clipped draws during
      the paint cycle; we could even perform clipped redraws if we know the
      extent of the invalidated area.
      2f445682
  2. 25 Jul, 2011 1 commit
  3. 23 Jul, 2011 2 commits
  4. 21 Jul, 2011 1 commit
  5. 20 Jul, 2011 2 commits
  6. 19 Jul, 2011 6 commits
  7. 18 Jul, 2011 8 commits
  8. 17 Jul, 2011 1 commit
  9. 15 Jul, 2011 5 commits
  10. 14 Jul, 2011 7 commits
    • Robert Bragg's avatar
      pick: Use Cogl API not GL API to disable dithering · c6a0427c
      Robert Bragg authored
      When picking we need to disable dithering to be sure that the hardware
      will not modify the colors we use as actor identifiers. Clutter was
      manually calling glEnable/Disable GL_DITHER to handle this, but that was
      a layering violation since Cogl is intended to handle all interactions
      with OpenGL. Since we are now striving for GL vs GLES to be a runtime
      choice we need to remove this last direct usage of GL from Clutter so it
      doesn't have to be linked with GL at build time.
      Signed-off-by: 's avatarNeil Roberts <neil@linux.intel.com>
      c6a0427c
    • Robert Bragg's avatar
      Provide stable paint-boxes for fixed sized actors · 3183240f
      Robert Bragg authored
      This updates _clutter_paint_volume_get_stage_paint_box to try and
      calculate more stable paint-box sizes for fixed sized paint-volumes by
      not basing the size on the volume's sub-pixel position.
      
      So the aim 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 across 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. This patch now adds padding to consider
      this too.
      Signed-off-by: 's avatarNeil Roberts <neil@linux.intel.com>
      Signed-off-by: 's avatarEmmanuele Bassi <ebassi@linux.intel.com>
      3183240f
    • Robert Bragg's avatar
      actor: improve rounding in get_allocation_geometry · df751a8a
      Robert Bragg authored
      Instead of relying on C to round the floating point allocation to
      integers by flooring the values we now use CLUTTER_NEARBYINT to round
      the allocation's position and size to the nearest integers instead. Using
      floor leads to rather unstable rounding for the width and height when
      there may be tiny fluctuations in the floating point width/height.
      Signed-off-by: 's avatarNeil Roberts <neil@linux.intel.com>
      Signed-off-by: 's avatarEmmanuele Bassi <ebassi@linux.intel.com>
      df751a8a
    • Robert Bragg's avatar
      Adds a CLUTTER_NEARBYINT macro for float rounding · 32487af5
      Robert Bragg authored
      This is a replacement for the nearbyint function which always rounds to
      the nearest integer. nearbyint is a C99 function so it might not always
      be available but also it seems in glibc it is defined as a function call
      so this macro could end up faster anyway. We can't just add 0.5 because
      it will break for negative numbers.
      Signed-off-by: 's avatarNeil Roberts <neil@linux.intel.com>
      Signed-off-by: 's avatarEmmanuele Bassi <ebassi@linux.intel.com>
      32487af5
    • Robert Bragg's avatar
      paint-volume: don't round paint-volume from allocation · ad234b30
      Robert Bragg authored
      The implementation of _clutter_actor_set_default_paint_volume which
      simply uses the actor's allocation to determine a paint-volume was
      needlessly using the allocation rounded to integers by internally using
      clutter_actor_get_allocation_geometry instead of
      clutter_actor_get_allocation_box. This was introducing a lot of
      instability into the paint-volume due to the way rounding was done.
      
      The code has now been updated to use clutter_actor_get_allocation_box
      so we are dealing with the floating point allocation instead.
      Signed-off-by: 's avatarNeil Roberts <neil@linux.intel.com>
      Signed-off-by: 's avatarEmmanuele Bassi <ebassi@linux.intel.com>
      ad234b30
    • Tomeu Vizoso's avatar
    • Tomeu Vizoso's avatar
      Remove unneeded class closure · 439c7e6e
      Tomeu Vizoso authored
      439c7e6e
  11. 13 Jul, 2011 1 commit