Skip to content
Snippets Groups Projects
  1. Aug 27, 2018
    • Keith Packard's avatar
      composite: 0.5. Window scaling and events · 769e6f43
      Keith Packard authored
      
      Output scaling:
      
       * Changes to mivaltree to reset window clip to owner window size
         instead of server window size when compositing
      
       * Allocate owner window size pixmap for composite pixmap
      
       * Paint scaled image for automatic compositing
      
       * Report owner window size in events to the window owner.
      
       * Scale exposure damage in compSetRedirectBorderClip from
         current size to owner size to make sure the correct parts of
         the window are repainted.
      
      Input scaling:
      
       * Change miSpriteTrace to scale cursor coordinates when transiting an
         owner-sized window. Do all computations in double to handle
         multiple such transitions without losing bits
      
       * Add ScaleRootCoordinate in events.c. This function takes a window
         and a root x/y and walks up the tree scaling each time there is an
         owner size set.
      
       * Use ScaleRootCoordinate in FixUpEventFromWindow.
      
       * Wrap event delivery in DeliverEvent in new
         SaveEventRootCoord/RestoreEventRootCoord functions so that
         different windows receiving the same event will all receive the
         correct coordinates.
      
      Composite events:
      
       * Deliver CompositePixmapNotify events from compSetPixmapVisitWindow
         so that applications will be notified each time the pixmap changes.
      
       * Deliver CompositeOwnerWindowSizeNotify events when owner window
         size is set.
      
      Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
      769e6f43
  2. Apr 02, 2018
  3. Sep 20, 2017
  4. Apr 26, 2017
    • Emma Anholt's avatar
      Add a Meson build system alongside autotools. · 1549e303
      Emma Anholt authored
      
      This is a work in progress that builds Xvfb, Xephyr, Xwayland, Xnest,
      and Xdmx so far.  The outline of Xquartz/Xwin support is in tree, but
      hasn't been built yet.  The unit tests are also not done.
      
      The intent is to build this as a complete replacement for the
      autotools system, then eventually replace autotools.  meson is faster
      to generate the build, faster to run the bulid, shorter to write the
      build files in, and less error-prone than autotools.
      
      v2: Fix indentation nits, move version declaration to project(), use
          existing meson_options for version-config.h's vendor name/web.
      
      Signed-off-by: default avatarEric Anholt <eric@anholt.net>
      Acked-by: default avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      1549e303
  5. Mar 21, 2017
  6. Feb 08, 2017
  7. Dec 13, 2016
    • Adam Jackson's avatar
      Revert "damage: Make damageRegionProcessPending take a damage not a drawable" · 32e632e8
      Adam Jackson authored
      The commit message makes the assertion that the code below damage is not
      allowed to change whether there's a damage monitor for the drawable.
      That turns out not to be the case! exa's mixed code, at least, will
      create and destroy a damage in PrepareAccess. The destroy path can then
      be catastrophic, as damageRegionProcessPending will attempt to
      RegionEmpty memory from the middle of a freed block.
      
      I'd wanted that invariant for performance, but faster isn't worth
      broken, so revert it. I think what exa's doing is reasonable, so the
      better way to improve performance for the unmonitored case is to either
      revisit dynamically wrapping into the GC, or inline damage into dix.
      
      This reverts commit 4e124203.
      
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1389886
      
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      32e632e8
  8. Dec 12, 2016
  9. Jul 18, 2016
  10. Jun 20, 2016
    • Keith Packard's avatar
      dix: Call screen block/wakeup handlers closest to blocking [v3] · fb1edccf
      Keith Packard authored
      
      The screen block and wakeup handlers are the only ones which provide a
      well known ordering between the wrapping layers; placing these as
      close as possible to the server blocking provides a way for the driver
      to control the flow of execution correctly.
      
      Switch the shadow code to run in the screen block handler so that it
      now occurrs just before the server goes to sleep.
      
      Switch glamor to call down to the driver after it has executed its own
      block handler piece, in case the driver needs to perform additional
      flushing work after glamor has called glFlush.
      
      These changes ensure that the following modules update the screen in
      the correct order:
      
      animated cursors        (uses RegisterBlockAndWakeupHandlers dynamically)
      composite               (dynamic wrapping)
      misprite                (dynamic wrapping)
      shadow                  (static wrapping)
      glamor                  (static wrapping)
      driver                  (static wrapping)
      
      It looks like there's still a bit of confusion between composite and
      misprite; if composite updates after misprite, then it's possible
      you'd exit the block handler chain with the cursor left hidden. To fix
      that, misprite should be wrapping during ScreenInit time and not
      unwrapping. And composite might as well join in that fun, just to make
      things consistent.
      
      [v2] Unwrap BlockHandler in shadowCloseScreen (ajax)
      [v3] ephyr: Use screen block handler for flushing changes
      
      ephyr needs to make sure it calls glXSwapBuffers after glamor finishes
      its rendering. As the screen block handler is now called last, we have
      to use that instead of a registered block/wakeup handler to make sure
      the GL rendering is done before we copy it to the front buffer.
      
      Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      fb1edccf
  11. May 18, 2016
    • Adam Jackson's avatar
      damage: Make damageRegionProcessPending take a damage not a drawable · 4e124203
      Adam Jackson authored
      
      In the case where there's no damage monitor on the drawable, we look
      that fact up twice: once before rendering to decide whether to compute
      damage, and again after to decide whether to append it. This is wasted
      effort, as the layer below us is effectively not allowed to change
      whether there's a damage monitor for the drawable, but there's no way
      the compiler can know that.
      
      Instead, look it up once up front, and change the check macros and
      damageRegionProcessPending to take a damage not a drawable.
      
      v2: Explicitly pass pDamage to the macros as well (Michel Dänzer)
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
      4e124203
  12. Sep 21, 2015
    • Adam Jackson's avatar
      rootless: Fix bogus handling of broken root clip · fa0bb018
      Adam Jackson authored
      
      gcc quite correctly complains about this:
      
          In file included from ../../include/scrnintstr.h:51:0,
                           from rootlessValTree.c:98:
          In function 'RegionUninit.isra.1',
              inlined from 'RegionEmpty' at ../../include/regionstr.h:194:5,
              inlined from 'RootlessMiValidateTree' at rootlessValTree.c:490:9:
          ../../include/regionstr.h:166:9: warning: attempt to free a non-heap object 'RegionBrokenData' [-Wfree-nonheap-object]
                   free((_pReg)->data);
      
      So that'd crash if you ever got there.  RegionNull will do almost the
      same thing only without the free(), so let's do that instead; it might
      still not be an entirely sane way to recover, but it at least won't
      crash.
      
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      fa0bb018
  13. Aug 18, 2015
  14. Jul 08, 2015
  15. Apr 21, 2015
  16. Nov 12, 2014
  17. Oct 08, 2014
  18. Jul 29, 2014
    • Adam Jackson's avatar
      miext/shadow: Remove shadowInit · d5b27997
      Adam Jackson authored
      
      This code is nonsensical.  You end up creating a screen-sized pixmap
      that's totally detached from everything else, which you then listen for
      damage on, which means you'll never hear any damage, which means your
      shadow update hooks will never get called.  Any driver using this would
      be sorely disappointed.
      
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      d5b27997
    • Adam Jackson's avatar
      miext/shadow: Remove ancient backwards-compatibility hack · cf4793d9
      Adam Jackson authored
      
      Here's a trip down memory lane.  Back when we merged kdrive we adopted
      kdrive's version of shadow, which used damage directly instead of
      hand-rolling it.  However a couple of Xorg drivers referred to the
      accumulated damage region in the shadow private directly, so I added a
      hack to copy the damage region around.
      
      That was 9148d870, back in early 2006.
      Eight years is unusually patient for me.  The neomagic and trident drivers
      were still relying on this, but they've been modified to ask the damage
      code for the region instead.
      
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      cf4793d9
  19. Mar 17, 2014
  20. Jan 12, 2014
  21. Dec 02, 2013
  22. Nov 24, 2013
  23. Nov 05, 2013
  24. Nov 01, 2013
  25. Oct 31, 2013
Loading