diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2011-09-18 14:52:04 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2011-11-02 11:30:21 +0200 |
commit | f22caf9aee2aa64313468b04efa615e2e1c7f8b3 (patch) | |
tree | f34d73c8f99b8eef51c43378617411fd5def8353 /client/canvas.cpp | |
parent | 76966571748efa32a706d21830349ab2431aa4e6 (diff) | |
download | spice-f22caf9aee2aa64313468b04efa615e2e1c7f8b3.tar.gz spice-f22caf9aee2aa64313468b04efa615e2e1c7f8b3.tar.xz spice-f22caf9aee2aa64313468b04efa615e2e1c7f8b3.zip |
client: rewrite surfaces cache
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
Diffstat (limited to 'client/canvas.cpp')
-rw-r--r-- | client/canvas.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/client/canvas.cpp b/client/canvas.cpp index 3b5f4b69..139b663b 100644 --- a/client/canvas.cpp +++ b/client/canvas.cpp @@ -24,14 +24,35 @@ #include "utils.h" #include "debug.h" +static SpiceCanvas* surfaces_cache_op_get(SpiceImageSurfaces *surfaces, uint32_t surface_id) +{ + SurfacesCache* surfaces_cache = static_cast<SurfacesCache*>(surfaces); + if (!surfaces_cache->exist(surface_id)) { + return NULL; + } + return (*surfaces_cache)[surface_id]->get_internal_canvas(); +} + +SurfacesCache::SurfacesCache() +{ + static SpiceImageSurfacesOps surfaces_ops = { + surfaces_cache_op_get, + }; + ops = &surfaces_ops; +} + +bool SurfacesCache::exist(uint32_t surface_id) +{ + return (this->count(surface_id) != 0); +} Canvas::Canvas(PixmapCache& pixmap_cache, PaletteCache& palette_cache, - GlzDecoderWindow &glz_decoder_window, CSurfaces &csurfaces) + GlzDecoderWindow &glz_decoder_window, SurfacesCache &csurfaces) : _canvas (NULL) , _pixmap_cache (pixmap_cache) , _palette_cache (palette_cache) , _glz_decoder(glz_decoder_window, _glz_handler, _glz_debug) - , _csurfaces(csurfaces) + , _surfaces_cache(csurfaces) { } |