summaryrefslogtreecommitdiffstats
path: root/client/display_channel.cpp
Commit message (Collapse)AuthorAgeFilesLines
* client: Advertise A8_SURFACE capabilitySøren Sandmann Pedersen2012-09-061-0/+1
|
* Add support for Composite command to the clientSøren Sandmann Pedersen2012-08-241-0/+13
| | | | | | All the real work is being done in spice-common, so this patch is just hooking up the virtual calls and adding the SPICE_DISPLAY_CAP_COMPOSITE capability.
* Update the spice-common submoduleYonit Halperin2012-05-031-2/+4
| | | | | | | | | spice-common changes: STREAM_DATA_SIZED message was added in order to support video streams with frames that their size is different from the initial size that the stream was created with. This patch also includes server and client adjustments to the new SpiceMsgDisplayStreamData.
* Use the spice-common submoduleMarc-André Lureau2012-03-251-1/+0
| | | | | | | | | | | | | | | | | | This patch will replace the common/ directory with the spice-common project. It is for now a simple project subdirectory shared with spice-gtk, but the goal is to make it a proper library later on. With this change, the spice-server build is broken. The following commits fix the build, and have been seperated to ease the review. v2 - moves all the generated marshallers to spice-common library - don't attempt to fix windows VS build, which should somehow be splitted with spice-common (or built from tarball only to avoid generation tools/libs deps) v3 - uses libspice-common-client - fix a mutex.h inclusion reported by Alon
* Remove trailing whitespace from end of linesDaniel P. Berrange2012-01-131-1/+1
|
* Remove trailing blank linesDaniel P. Berrange2012-01-131-1/+0
| | | | Remove any blank lines at the end of all source files
* client: display channel - destroy all surfaces on disconnectYonit Halperin2011-11-021-6/+12
| | | | | Fix not destroying surfaces and other data (e.g., streams) upon disconnection. (cherry picked from commit 010b22cd771b7e81363b4b6521e4265b093fcd25 branch 0.8)
* client: display channel migrationYonit Halperin2011-11-021-13/+144
| | | | | | | | (cherry picked from commit cad3c585444f940f60c12789f4174f2d32bec70f branch 0.8) Conflicts: client/display_channel.cpp
* client: rewrite surfaces cacheYonit Halperin2011-11-021-97/+52
| | | | | | | | | | | use std::map instead of a specific template (CHash). There is no need for special template. Moreover, using std::map will allow easy iteration over the surfaces. (cherry picked from commit fcb3b4ce5231218bcf949da4270bd85a2cfb3535 branch 0.8) Conflicts: client/display_channel.cpp
* client: don't crash when booting a Xinerama setupChristophe Fergeau2011-09-191-4/+6
| | | | | | | | | | | | | | | | | | In a Xinerama setup, when X starts up and creates one of the secondary screens, first a non-primary surface is created on the secondary screen, and then the primary surface for this screen is created. This causes a crash when the guest uses Xinerama and the client is attached to the VM before X starts (ie while the guest is booting). This happens because DisplayChannel::create_canvas (which is called when creating a non-primary surface) assumes a screen has already been set for the DisplayChannel while this only happens upon primary surface creation. However, it uses the screen for non important stuff, so we can test if screen() is non NULL before using it. This is what is done in other parts of this file. Fixes rhbz #732423
* client: fix flipped video in Linux guest on windows client, RHBZ #667689Yonit Halperin2011-05-191-3/+5
| | | | | | Video streams from Linux guests are oriented top-down, where gdi_canvas_put_image always received display context for down-top oriented bitmap. I fixed create_bitmap to consider the stream orientation.
* s/USE_OGL/USE_OPENGLChristophe Fergeau2011-05-031-20/+20
| | | | This is more explicit about what it does, and not much longer
* add #include <config.h> to all source filesChristophe Fergeau2011-05-031-0/+3
| | | | | | | | When using config.h, it must be the very first include in all source files since it contains #define that may change the compilation process (eg libc structure layout changes when it's used to enable large file support on 32 bit x86 archs). This commit adds it at the beginning of all .c and .cpp files
* opengl: fix compilationChristophe Fergeau2011-03-231-3/+0
| | | | | | When OpenGL is enabled, build fails in DisplayChannel::create_surface because Canvas *canvas is declared twice. Remove the first declaration to fix compilation.
* client/display_channel: gcc 4.6.0 unused fixesAlon Levy2011-01-251-6/+12
|
* mingw32 build: fix signed/unsigned warnings as errorsAlon Levy2010-12-081-1/+1
|
* spicec: Don't show a white screen if guest resolution does not fit fullscreenHans de Goede2010-11-251-1/+1
| | | | | | | | | | | Currently when going / starting fullscreen if the guest resolution for one of the monitors is higher then that monitor on the client can handle, we show a white screen. Leaving the user stuck (unless they know the fullscreen key switch combi) with a white screen when starting the client fullscreen from the XPI. This patch changes the client to fall back to windowed mode in this case instead.
* Swap red and blue when decoding 0.4 mjpeg streamsAlexander Larsson2010-07-201-1/+1
| | | | | | There was an error in how this was encoded in 0.4, which we need to handle. There is still some issues with the old streams as the luminocity handling in 0.4 was not correct.
* Don't send padding over the network with video dataAlexander Larsson2010-07-201-5/+4
|
* Update client and protocol to support the new SpiceClipRectsAlexander Larsson2010-06-301-3/+2
|
* detaching the screen when the primary surface is destoryed and closing the ↵Yonit Halperin2010-06-291-10/+15
| | | | window if the primary surface is not recreated (the monitor has been detached).
* Remove support for clip by pathAlexander Larsson2010-06-241-1/+1
| | | | This is not supported currently anyway and was not generated before.
* Fix screen resolution changes on old serversAlexander Larsson2010-06-231-5/+5
| | | | | * Correctly check for existing canvas 0 * Don't try to unlock the screen size if there is no active screen
* Implement display_mode message needed for backwards compatAlexander Larsson2010-06-221-0/+12
|
* Convert client to use indirect calls for message marshallingAlexander Larsson2010-06-221-2/+1
| | | | This is required to support multiple versions
* Switch client to use generated marshallersAlexander Larsson2010-06-181-6/+8
|
* Client: Use the autogenerated demarshallersAlexander Larsson2010-06-181-86/+54
| | | | | | | | | | | | | | | | When a message has been read from the network we now pass it into the generated demarshaller for the channel. The demarshaller converts the network data to in-memory structures that is passed on to the spice internals. Additionally it also: * Converts endianness * Validates sizes of message and any pointers in it * Localizes offsets (converts them to pointers) * Checks for zero offsets in messages where they are not supported Some of this was previously done using custom code in the client, this is now removed.
* client: Only invalidate on screen if drawing to the primary surfaceAlexander Larsson2010-06-091-2/+6
|
* Fix some misspelled identifiersAlexander Larsson2010-05-211-9/+9
| | | | | | | | | severty -> severity SpiceResorceID -> SpiceResourceID SpiceResorceList -> SpiceResourceList resorces -> resources ped_size -> pad_size postition -> position
* Fix spelling errors in comments and stringsAlexander Larsson2010-05-211-2/+2
|
* Remove all mentions of "cairo" from the codeAlexander Larsson2010-05-031-5/+5
| | | | | The command line option is renamed from "cairo" to "sw", and similarly all filenames and types from Cairo to Sw (and similar).
* Make each surface its own depth/formatAlexander Larsson2010-04-231-20/+22
| | | | | | | | Surface creation now specifies the exact format, not only the bit depth of each surface which is used for rendering. Additionally we now actually store the surfaces in that format, instead of converting everything to 32bpp when drawing or e.g. handling palettes.
* Make client canvas and pixmaps handle more formats and simplifyAlexander Larsson2010-04-231-15/+14
| | | | | | | | | | | We now support 16bit format pixmaps as well as the old ones. Including both 555 and 565 modes. We drop the palette argument for pixmap construction as it was only used for black/white anyway. Canvas creation is simplified so that there is no separate set_mode state. Canvases are already created in the right mode and never change.
* Add emacs modelines to more filesAlexander Larsson2010-04-231-0/+1
|
* Relicense everything from GPL to LGPL 2.1+Alexander Larsson2010-04-131-9/+9
|
* Remove leftover AutoVStreamInit classAlexander Larsson2010-04-081-10/+0
|
* Initialize _kill_mark so we don't get spurious valgrind warningsAlexander Larsson2010-04-081-0/+1
|
* Use libjpeg to decode mjpegs, not ffmpegAlexander Larsson2010-04-081-151/+24
| | | | | | | | | | | | | | | | | | This is pretty straightforward, although there are two weird issues. The current encoder has two bugs in the yuv conversion. First of all it switches red and blue, due to something of an endianness issue. We keep this behavior by switching red and blue. Maybe we want to change this in the new protocol version since switching this may cause jpeg compression to be worse. Secondly, the old coder/decoder did rgb to/from yuv420 wrongly for jpeg, not using the "full scale" version of Y that is used in jpeg, but the other one where y goes from 16 to 235. (See jpeg/jfif reference on http://en.wikipedia.org/wiki/YCbCr for details.) The new decoder uses the full range in order to get better quality, which means old encoders will show slightly darker images. This completely removes all ffmpeg usage in the client
* libspice: add off screens supportIzik Eidus2010-04-031-87/+255
| | | | Signed-off-by: Izik Eidus <ieidus@redhat.com>
* spice server: surface create/destroy protocol supportIzik Eidus2010-04-031-42/+102
| | | | | | | | | | | Now we can send commands from the server to the client to destroy surfaces (right now just the primary surface) Needed for offscreens support) Another patch`s on the way. Signed-off-by: Izik Eidus <ieidus@redhat.com>
* spice: client: fix handling of top down images in video streamsAlon Levy2010-03-241-9/+5
| | | | Top down streams arrive from x11-qxl driver.
* Define GL_GLEXT_PROTOTYPES in CFLAGS not in random places in the sourceAlexander Larsson2010-03-101-2/+0
|
* Rename symbols that were changed in spice-protocolAlexander Larsson2010-02-041-125/+125
| | | | | | This is an automatic change using: $ find -name "*.[ch]" | xargs ../spice-protocol/rename-identifiers.sh ../spice-protocol/renames $ find -name "*.cpp" | xargs ../spice-protocol/rename-identifiers.sh ../spice-protocol/renames
* client: move visibility change logic from screen to appYaniv Kamay2009-12-281-17/+1
|
* client: improve screen resizingYaniv Kamay2009-12-281-2/+29
| | | | | | | | | | | Screen now have to modes locked and unlocked. In unlocked mode, the application can change screen size and so reduce resolution changing. The application can also choose to change window size while not in full screen mode. In locked mode the application must ewtain locker screen size setting.
* client: interactive screen layerYaniv Kamay2009-11-301-4/+208
|
* spice: client: gl: fix glx support.Izik Eidus2009-11-091-2/+14
| | | | | | | Just move around touch_context and untouch_context to be at the right places. Signed-off-by: Izik Eidus <ieidus@redhat.com>
* spice client: remove timer interface from platform - use Application (via ↵Yonit Halperin2009-11-091-76/+34
| | | | ProcessLoop interface).
* spice client: Transfer all channels run loop from EventsLoop class to ↵Yonit Halperin2009-11-091-4/+4
| | | | ProcessLoop class
* spice client: creating a general process loop.Yonit Halperin2009-11-091-7/+8
| | | | | | | | | | | The process loop is responsible for: 1) waiting for events 2) timers 3) events queue for actions that should be performed in the context of the thread and are pushed from other threads. The benefits: 1) remove duplicity: till now, there was one implementaion of events loop for the channels and another one for the main thread. 2) timers can be executed on each thread and not only on the main thread. 3) events can be pushed to each thread and not only to the main thread. In this commit, only the main thread was modified to use the new process loop.