Age | Commit message (Collapse) | Author | Files | Lines |
|
xspice is a new X server that is also a Spice server. See
README.xspice for more information.
+ added configure options to accomodate an extra driver (spiceqxl_drv.so)
built alongside existing qxl_drv.so
+ XSPICE define where the code could not be split easily (qxl_driver.c
and qxl.h)
- no functional changes to driver.
+ some small cleanups (still too many warnings)
|
|
|
|
|
|
Add (copy from ui/spice-core.c) most of the options from qemu for
spice server. Notable exception is per channel port selection, so
the only sure way to verify all channels use the secure port (or
the normal one) is to not set the port (or not set the secure port).
About options: All options are settable either from environment
variables called XSPICE_SOMETHING or by a SpiceSomething parameter
in the Device section of the xorg configuration file. The xspice wrapper
added later makes use of those environment variables and gives a
more standard command line parameter interface.
|
|
|
|
|
|
stop the worker thread and track the status, ignoring io requests (i.e.
prevent red_dispatcher writes to red_worker) if red_worker is stopped.
This fixes spice red_worker asserts from actions attepted after X
has destroyed a screen. X runs in a loop destroying and recreating screens
multiple times during the process lifetime, whenever the last X client
has exited.
Note that the spice server is kept up during a X screen restart. This is
on purpose, to avoid a spice-client closing when doing a window manager
restart. Cleanup of the spice-server on atexit - still to do.
|
|
|
|
xspice is placed under scripts, adding a new Makefile.am, only
installed if --enable-xspice.
spiceqxl.xorg.conf.example is placed under examples to be installed
to share/doc if --enable-xspice.
|
|
uses xf86AddInputDriver, xf86PostButtonEvent, xf86PostMotionEvent and xf86PostKeyboardEvent
reused xspice_get_spice_server to access the single spice server instance.
|
|
|
|
|
|
|
|
Initialize a SpiceServer instance, and implement SpiceCoreInterface,
that is fd read, write notification and watchs (timers).
The SpiceServer instance creation is wrapped in xspice_get_spice_server to allow
access from the pointer and keyboard drivers introduced later.
The fd implementation is off because Xserver doesn't allow us to be
notified on write unblock, only read. Workaround is to poll.
|
|
|
|
Memory is taken from malloc instead of from the pci bar.
Adds shadow_rom to qxl_screen_t.
Introduces init_qxl_rom, which is directly taken from the qxl device
in qemu. Plenty of TODO's added in this commit about various constants
and about factoring out the code to not do this copy paste from qemu.
|
|
|
|
|
|
|
|
This ifdefs out all the parts in qxl_driver.c that are pci device specific
and are not required by xspice. No functional change. The resulting spiceqxl_drv.so
doesn't run.
|
|
|
|
Fixes a few places that have hardcoded "qxl" to use the already defined
QXL_DRIVER_NAME.
|
|
adds --enable-xspice[=no|yes|only], which builds an spiceqxl_drv.so target, and
defines SUPPORT_XSPICE. Fails build if spice-server not found. If you
set to only it will not build the qxl driver. This is useful for easier
packaging by not creating unpackaged artifacts.
|
|
|
|
qxl_map_memory_helper and qxl_unmap_memory_helper introduced, here as
a simple split, later different implementation if XSPICE defined will
be added. Nicer then putting an ifdef inside the map/unmap functions.
|
|
used in qxl_reset. Later ifdefed with XSPICE, which only uses a single
slot covering all memory (really it should just avoid calling the translation
mechanism, but for now this is simple enough).
|
|
|
|
replace everywhere it is needed for xspice - places left out are ifdefed
out later based on the same define mentioned in qxl.h, XSPICE.
|
|
Add a qxl_screen_t* member to qxl_ring to make generelizing outb to
ioport_write easier in the next patch. This means we do an extra deref
and addition for every outb, but it means the code becomes simpler for
doing outb in qxl_drv.so and a function call for spiceqxl_drv.so
|
|
|
|
|
|
|
|
introduced a define for enableing it, DEBUG_REGIONS.
|
|
This reverts commit 9ee2aa1ccefe1f3fecaf481f38581c9b0f201ef4.
Conflicts:
src/qxl_driver.c
|
|
|
|
|
|
removing whitespace in lines consisting only of it.
most of those areas are touched later, but not all.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Surfaces need to be evacuated before switching VT
- The device must be reset
- Framebuffer access must be turned off
- Pixmaps created while switched away must be created in host memory.
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=552000
|
|
Instead of uploading the full software image in one go, upload it in
512x512 tiles to avoid having to find huge huge blocks of memory and
potentially running out.
|
|
Surfaces that were used in a read-only way don't need to be uploaded
again since they didn't change. This is a particularly important
optimization for Composite since sources and masks there don't have
tight damage tracking regions.
|
|
|
|
A bunch of renames and just plain removal (where the
struct was never used):
* s/qxl_cursor_cmd/QXLCursorCmd/
* s/qxl_mode/QXLMode/
* s/qxl_command/QXLCommand/
* remove qxl_command_ext
* s/qxl_rect/QXLRect/
* s/qxl_release_info/QXLReleaseInfo/
* remove QXLReleaseInfo_ext (prev qxl_release_info_ext)
* s/qxl_clip/QXLClip/
* s/qxl_point/QXLPoint/
* s/qxl_pattern/QXLPattern/
* s/qxl_point16/QXLPoint16/
* s/qxl_brush/QXLBrush/
* s/qxl_mask/QXLQMask/
* s/QXL_BRUSH/SPICE_BRUSH/
* s/QXL_IMAGE/SPICE_IMAGE/
* s/qxl_image_descriptor/QXLImageDescriptor/
* s/qxl_data_chunk/QXLDataChunk/
* s/qxl_bitmap_format/SpiceBitmapFmt/
* s/qxl_bitmap/QXLBitmap/
* s/qxl_image/QXLImage/
* s/qxl_fill/QXLFill/
* s/qxl_opaque/QXLOpaque/
* s/qxl_copy/QXLCopy/
* s/qxl_transparent/QXLTransparent/
* s/qxl_alpha_blend/QXLAlphaBlend/
* s/qxl_copy_bits/QXLCopyBits/
* s/qxl_blend/QXLBlend/
* s/qxl_rop3/QXLRop3/
* s/qxl_line_attr/QXLLineAttr/
* s/qxl_stroke/QXLStroke/
* s/qxl_text/QXLText/
* use QXLBlackness,QXLInvers (typo needs fixing later), QXLWhiteness
* s/QXL_CLIP_TYPE/SPICE_CLIP_TYPE/
* s/qxl_compat_drawable/QXLCompatDrawable/
* s/qxl_drawable/QXLDrawable/
* s/qxl_surface_cmd/QXLSurfaceCmd/
* remove qxl_compat_update_cmd
* remove qxl_update_cmd
* remove QXL_CURSOR_DEVICE_DATA_SIZE
* s/CURSOR_TYPE/SPICE_CURSOR_TYPE/
* s/qxl_cursor/QXLCursor/
* s/qxl_rom/QXLRom/
* remove QXL_SURF_TYPE_PRIMARY
* s/qxl_surface_create/QXLSurfaceCreate/
|