diff -urN mozilla-release.orig/gfx/thebes/gfxPlatform.cpp mozilla-release/gfx/thebes/gfxPlatform.cpp --- mozilla-release.orig/gfx/thebes/gfxPlatform.cpp 2013-02-11 17:09:53.685871126 +0400 +++ mozilla-release/gfx/thebes/gfxPlatform.cpp 2013-02-11 17:14:06.844574090 +0400 @@ -507,11 +507,10 @@ delete static_cast(srcSurfUD); } -void SourceSnapshotDetached(cairo_surface_t *nullSurf) +void SourceSnapshotDetached(void *nullSurf) { - gfxImageSurface* origSurf = - static_cast(cairo_surface_get_user_data(nullSurf, &kSourceSurface)); + gfxImageSurface *origSurf = static_cast(nullSurf); origSurf->SetData(&kSourceSurface, NULL, NULL); } @@ -626,14 +625,9 @@ } - cairo_surface_t *nullSurf = - cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA); - cairo_surface_set_user_data(nullSurf, - &kSourceSurface, - imgSurface, - NULL); - cairo_surface_attach_snapshot(imgSurface->CairoSurface(), nullSurf, SourceSnapshotDetached); - cairo_surface_destroy(nullSurf); + cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic", + (const unsigned char *) "data", 4, SourceSnapshotDetached, imgSurface.get()); + } SourceSurfaceUserData *srcSurfUD = new SourceSurfaceUserData;