Subject: CVS commit: wip/xf86-video-qxl
From: othyro
Date: 2014-12-04 21:03:18
Message id: E1Xwcch-0004LM-6F@sfs-ml-4.v29.ch3.sourceforge.com

Log Message:
    xf86-video-qxl 0.1.3

    Revise the XSpice audio processing to avoid the use of pthreads.
    
    The initial implementation used a separate thread to drive the audio
    playback channel.  But if you have adaptive streaming turned on,
    you will eventually get a update_client_playback_latency message on the
    display channel (which in the Xspice case is being driven by the main,
    Xorg, thread).
    
    After enough time you would get a thread collision and bad things
    would result.  I saw this manifest as infinite spin loops in snd_send_data.
    
    This patch eliminates the use of threading altogether, making everything
    run in the main Xorg thread using watches and timers, eliminating the
    possibility of thread collision.

    drmmode: Fix compilation warning
    
    One recent change introduced a gcc compilation warning:
    
      CC       qxl_drmmode.lo
    qxl_drmmode.c: In function 'drmmode_set_mode_major':
    qxl_drmmode.c:251:9: error: ISO C90 forbids mixed declarations and code \ 
[-Werror=declaration-after-statement]
             CursorPtr cursor = xf86_config->cursor;
    
    This commit moves the CursorPtr declaration to the top of the
    drmmode_set_mode_major function in order to fix that warning.

    Remove call to CrtcRotate()
    
    Our driver doesn't support rotation, and calling CrtcRotoate()
    may result in crash. Let's remove that useless call.
    
    Fixes:
    http://bugzilla.redhat.com/1067709

    Check qxl_download_box() arguments
    
    Sending empty region is invalid and the server returns an error (this
    can be triggered by typing space in xfig)
    
    Without the previous patch, error was ignored and the driver would enter
    an infinite loop.
    
    Assert on valid arguments, and return early if the given region is empty.
    
    Fixes:
    http://bugzilla.redhat.com/1151559

    Assert on QXL_INTERRUPT_ERROR
    
    When qemu qxl device reaches a guest bug, it might set the
    QXL_INTERRUPT_ERROR interrupt flag, and stops processing guest
    commands. Therefore, it makes sense to check that flag in the guest and
    quit, instead of running in infinite loop in X and consuming CPU.
    
    Related to:
    https://bugzilla.redhat.com/show_bug.cgi?id=1151559

    drm: fail gracefuly on monitor resize
    
    If drmModeSetCrtc() failed, try to fallback to previous working
    configuration.
    
    Related to:
    https://bugzilla.redhat.com/show_bug.cgi?id=1127552

    In XSpice audio, fully clear the data structure; silences valgrind warnings.

    When uploading a region, do not go outside the source image size.
    
    This problem was exposed (and probably only occurs) when using XSpice
    in dfps mode with spice-html5, and resizing from larger to smaller.
    The screen would be resized, but the update region would still attempt
    to transmit any pending changes to the (now) truncated surface.  This
    would often lead to a crash.

    Initialize the frame buffer used in dfps mode; this silences a number
    of valgrind errors.

    Tune the dfps region tracking to collapse to the bounding rectangle
    if too many small, incremental, updates are provided.
    
    Attempting to use x11perf to measure performance revealed a fairly
    serious weakness in the dfps code in that use case.  In between
    fps ticks, the updated_region would grow to have thousands of
    rectangles, which made processing extraordinarily slow.
    
    This patch provides a cap on the number of rectangles inside
    a region; once it reaches the cap, we collapse the update_region
    to just transmit the bounding rectangle instead.

    Add helper functions for updating the boxes and regions; makes the
    code a bit cleaner.

    In XSpice mode, enable the ability to specify the various ram buffer sizes.
    
    Also adjust the mode selection to fit, and add a few larger modes.

    The display of the RAM size subtracts the frame buffer, but it has
    already been subtracted in setting the num_pages field.

    Skip modes more precisely.

    Free the region pointer as well; eliminates a memory leak in dfps mode.

Files:
RevisionActionfile
1.6modifywip/xf86-video-qxl/Makefile
1.4modifywip/xf86-video-qxl/distinfo