1. 24 Apr, 2018 4 commits
    • Benjamin Otte's avatar
      cairocontext: Remove fallback implementations · ae7a6773
      Benjamin Otte authored
      Now that all Cairo contexts are ported to managing cairo surfaces
      themselves, the old fallback code that didi the managing is no longer
      needed.
      
      Also clarify the behavior of gdk_cairo_context_cairo_create() wrt the
      vfunc by doing the early exit and the clipping outside of it.
      ae7a6773
    • Benjamin Otte's avatar
      drawcontext: Only pass the region that matters · 83ea0b37
      Benjamin Otte authored
      We used to pass 2 regions to GdkDrawCotnext.end_frame() but code was
      confusing what they meant. So we now don't do that anymore and only pass
      the region that matters: The frame region.
      83ea0b37
    • Benjamin Otte's avatar
      x11: Move implementation of Cairo context backends · 03e6cefe
      Benjamin Otte authored
      Also, don't implement SurfaceClass.ref_cairo_surface() anymore. This
      means calls to it will crash now. But as they only happen in the generic
      GdkCairoContext implementation, we shouldn't be affected by that.
      
      Plus, once all backends have been ported, that call is going away
      anyway.
      03e6cefe
    • Benjamin Otte's avatar
      gdk: Add Cairo context implementations for all backends · 813e9c95
      Benjamin Otte authored
      And make the GdkCairoContext as abstract.
      
      The idea of this and thje following commits is to get rid of all
      Cairo code in gdksurface.c (and $backend/gdksurface-$backend.c)
      by moving that code into the Cairo context files.
      In particular, the GdkSurfaceClass.begin_frame/end_frame()
      functions (which are currently exclusively used by the Cairo code
      should end up being moved to GdkDrawContextClass.begin/end_frame().
      
      This has multiple benefits:
      
      1. It unifies code between the different drawing contexts.
         GL lives in GLContext, Vulkan in VulkanContext and Cairo in
         CairoContext. In turn, this makes it way easier to reason about
         what's going on in surface-specific code. Currently pretty much
         all backends do things wrong when they want to sync to drawing
         or to the frame clock.
      
      2. It makes the API of GdkSurface smaller. No drawing code (apart
         from creating the contexts) needs to remain.
      
      3. It confines Cairo to the Drawcontext, thereby making it way
         more obvious when backends are still using it in situations
         where it may now conflict with OpenGL (like when doing the dnd
         failed animation or in the APIs that I'm removing in this
         branch).
      
      4. We have 2 very different types of Cairo contexts: The X/win32
         model, where we have a natively supported Cairo backend but do
         double buffering ourselves and use similar surfaces and the
         Wayland/Broadway model where we use image surfaces without any
         Cairo backend support and have to submit the buffers manually.
         By not sharing code between those 2 versions, we can make the
         actual code way smaller. We also get around the need to create
         1x1 image surfaces in the Wayland backend where we pretend
         there's a native Cairo surface.
      813e9c95
  2. 01 Nov, 2017 1 commit
  3. 28 Apr, 2016 1 commit
  4. 05 Jul, 2015 1 commit
  5. 14 Aug, 2014 1 commit
  6. 15 Jun, 2014 2 commits
    • Paolo Borelli's avatar
      TextView: render the background of border windows · 715b8744
      Paolo Borelli authored
      Set the .top, .left, etc css classes and render the background
      of the border windows.
      Change the reftest implementation accordingly.
      715b8744
    • Paolo Borelli's avatar
      Add a TextView reftests checking border-windows · 2eeff1ee
      Paolo Borelli authored
      TextView border windows are internal windows used to draw on the gutter
      of the textview (e.g. line numbers). The test uses the gmodule hook to
      programmatically draw on the border-windows at each side of the textview
      and compares the result with 3x3 grid of labels.
      2eeff1ee