Skip to content
  • 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...
    813e9c95