# HG changeset patch # Parent 9d3c9b863c697634e434b687d456bb82fa794ecf # User Uli Schlachter Bug 722975 - --enable-system-cairo build is broken after Bug 715658 fixed diff --git a/mozilla/gfx/thebes/gfxPlatform.cpp b/mozilla/gfx/thebes/gfxPlatform.cpp --- mozilla/gfx/thebes/gfxPlatform.cpp +++ mozilla/gfx/thebes/gfxPlatform.cpp @@ -502,21 +502,19 @@ struct SourceSurfaceUserData BackendType mBackendType; }; void SourceBufferDestroy(void *srcSurfUD) { 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); } RefPtr gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface) { void *userData = aSurface->GetData(&kSourceSurface); @@ -621,24 +619,19 @@ gfxPlatform::GetSourceSurfaceForSurface( } srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(), imgSurface->Stride(), size, format); } - 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; srcSurfUD->mBackendType = aTarget->GetType(); srcSurfUD->mSrcSurface = srcBuffer; aSurface->SetData(&kSourceSurface, srcSurfUD, SourceBufferDestroy); return srcBuffer;