SCanvas::SCanvas(bool onscreen,
                 int width, int height, uint32_t format, RedWindow *win,
                 PixmapCache& pixmap_cache, PaletteCache& palette_cache,
                 GlzDecoderWindow &glz_decoder_window, CSurfaces& csurfaces)
    : Canvas (pixmap_cache, palette_cache, glz_decoder_window, csurfaces)
    , _pixmap (0)
{
    if (onscreen) {
        _pixmap = new RedPixmapSw(width, height,
                                  RedDrawable::format_from_surface(format),
                                  true, win);
        _canvas = canvas_create_for_data(width, height, format,
                                         _pixmap->get_data(),
                                         _pixmap->get_stride(),
                                         &pixmap_cache.base,
                                         &palette_cache.base,
                                         &csurfaces.base,
                                         &glz_decoder(),
                                         &jpeg_decoder(),
                                         &zlib_decoder());
    } else {
        _canvas = canvas_create(width, height, format,
                                &pixmap_cache.base,
                                &palette_cache.base,
                                &csurfaces.base,
                                &glz_decoder(),
                                &jpeg_decoder(),
                                &zlib_decoder());
    }
    if (_canvas == NULL) {
        THROW("create canvas failed");
    }
}
Example #2
0
GCanvas::GCanvas(int width, int height, uint32_t format, RedWindow *win,
                 RenderType rendertype,
                 PixmapCache& pixmap_cache, PaletteCache& palette_cache,
                 GlzDecoderWindow &glz_decoder_window, SurfacesCache &csurfaces)
    : Canvas(pixmap_cache, palette_cache, glz_decoder_window, csurfaces)
    , _pixmap (0)
    , _textures_lost (false)
{
    _pixmap = new RedPixmapGL(width, height,
                              RedDrawable::format_from_surface(format),
                              true, win, rendertype);
    if (!(_canvas = gl_canvas_create(width, height,
                                     SPICE_SURFACE_FMT_DEPTH(format),
                                     &pixmap_cache.base,
                                     &palette_cache.base,
                                     &csurfaces,
                                     &glz_decoder(),
                                     &jpeg_decoder(),
                                     &zlib_decoder()))) {
        THROW("create canvas failed");
    }
}