# HG changeset patch # User Connor Behan # Date 1370038985 -7200 # Node ID 52b02042b27f75acbcb2bd4822bedb00ab680e67 # Parent 08ed531fed70978385cf9253bbc8389b0abe76ca Bug 722975: Unbreak builds using --with-system-cairo. r=bas diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -548,23 +548,31 @@ struct SourceSurfaceUserData BackendType mBackendType; }; void SourceBufferDestroy(void *srcSurfUD) { delete static_cast(srcSurfUD); } +#if MOZ_TREE_CAIRO void SourceSnapshotDetached(cairo_surface_t *nullSurf) { gfxImageSurface* origSurf = static_cast(cairo_surface_get_user_data(nullSurf, &kSourceSurface)); origSurf->SetData(&kSourceSurface, NULL, NULL); } +#else +void SourceSnapshotDetached(void *nullSurf) +{ + gfxImageSurface* origSurf = static_cast(nullSurf); + origSurf->SetData(&kSourceSurface, NULL, NULL); +} +#endif RefPtr gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface) { void *userData = aSurface->GetData(&kSourceSurface); if (userData) { SourceSurfaceUserData *surf = static_cast(userData); @@ -667,24 +675,28 @@ gfxPlatform::GetSourceSurfaceForSurface( } srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(), imgSurface->Stride(), size, format); } +#if MOZ_TREE_CAIRO 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); +#else + cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic", (const unsigned char*) "data", 4, SourceSnapshotDetached, imgSurface.get()); +#endif } SourceSurfaceUserData *srcSurfUD = new SourceSurfaceUserData; srcSurfUD->mBackendType = aTarget->GetType(); srcSurfUD->mSrcSurface = srcBuffer; aSurface->SetData(&kSourceSurface, srcSurfUD, SourceBufferDestroy); return srcBuffer;