50a3043194
This adds an invalidation listener mechanism to SkPixelRef to let it send this message while still staying ignorant of who's listening. These messages are tricky to deliver. The SkPixelRefs they originates from and the GrResourceCaches they ultimately end up at may be on different threads; neither class is threadsafe; their object lifetimes are totally independent; it's a many-senders-to-many-receivers relation; and neither codebase should really know about the other. So I've added a per-message-type global message bus to broadcast messages to threadsafe inboxes. Anyone can post() a message, which will show up in all the inboxes of that type, read whenever the inbox's owner calls poll(). The implementation is _dumb_; it can be improved in several dimensions (inbox size limits, lock-free message delivery) if we find the need. I took some care to make sure not to send the invalidation message for any SkPixelRef that's sharing a generation ID with another SkPixelRef. BUG= R=bsalomon@google.com, scroggo@google.com, reed@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/26734003 git-svn-id: http://skia.googlecode.com/svn/trunk@11949 2bbb7eff-a529-9590-31e7-b0007b416f81
176 lines
5.6 KiB
Python
176 lines
5.6 KiB
Python
# GYP file to build unit tests.
|
|
{
|
|
'includes': [
|
|
'apptype_console.gypi',
|
|
],
|
|
'targets': [
|
|
{
|
|
'target_name': 'tests',
|
|
'type': 'executable',
|
|
'include_dirs' : [
|
|
'../src/core',
|
|
'../src/effects',
|
|
'../src/lazy',
|
|
'../src/pathops',
|
|
'../src/pdf',
|
|
'../src/pipe/utils',
|
|
'../src/utils',
|
|
'../tools/',
|
|
],
|
|
'includes': [
|
|
'pathops_unittest.gypi',
|
|
],
|
|
'sources': [
|
|
'../tests/AAClipTest.cpp',
|
|
'../tests/AndroidPaintTest.cpp',
|
|
'../tests/AnnotationTest.cpp',
|
|
'../tests/ARGBImageEncoderTest.cpp',
|
|
'../tests/AtomicTest.cpp',
|
|
'../tests/BitmapCopyTest.cpp',
|
|
'../tests/BitmapFactoryTest.cpp',
|
|
'../tests/BitmapGetColorTest.cpp',
|
|
'../tests/BitmapHasherTest.cpp',
|
|
'../tests/BitmapHeapTest.cpp',
|
|
'../tests/BitSetTest.cpp',
|
|
'../tests/BlitRowTest.cpp',
|
|
'../tests/BlurTest.cpp',
|
|
'../tests/CanvasTest.cpp',
|
|
'../tests/CanvasStateTest.cpp',
|
|
'../tests/ChecksumTest.cpp',
|
|
'../tests/ClampRangeTest.cpp',
|
|
'../tests/ClipCacheTest.cpp',
|
|
'../tests/ClipCubicTest.cpp',
|
|
'../tests/ClipStackTest.cpp',
|
|
'../tests/ClipperTest.cpp',
|
|
'../tests/ColorFilterTest.cpp',
|
|
'../tests/ColorTest.cpp',
|
|
'../tests/DataRefTest.cpp',
|
|
'../tests/DeferredCanvasTest.cpp',
|
|
'../tests/DequeTest.cpp',
|
|
'../tests/DeviceLooperTest.cpp',
|
|
'../tests/DocumentTest.cpp',
|
|
'../tests/DrawBitmapRectTest.cpp',
|
|
'../tests/DrawPathTest.cpp',
|
|
'../tests/DrawTextTest.cpp',
|
|
'../tests/DynamicHashTest.cpp',
|
|
'../tests/EmptyPathTest.cpp',
|
|
'../tests/ErrorTest.cpp',
|
|
'../tests/FillPathTest.cpp',
|
|
'../tests/FitsInTest.cpp',
|
|
'../tests/FlatDataTest.cpp',
|
|
'../tests/FlateTest.cpp',
|
|
'../tests/FontHostStreamTest.cpp',
|
|
'../tests/FontHostTest.cpp',
|
|
'../tests/FontMgrTest.cpp',
|
|
'../tests/FontNamesTest.cpp',
|
|
'../tests/FrontBufferedStreamTest.cpp',
|
|
'../tests/GeometryTest.cpp',
|
|
'../tests/GifTest.cpp',
|
|
'../tests/GLInterfaceValidation.cpp',
|
|
'../tests/GLProgramsTest.cpp',
|
|
'../tests/GpuBitmapCopyTest.cpp',
|
|
'../tests/GpuColorFilterTest.cpp',
|
|
'../tests/GpuDrawPathTest.cpp',
|
|
'../tests/GrContextFactoryTest.cpp',
|
|
'../tests/GradientTest.cpp',
|
|
'../tests/GrMemoryPoolTest.cpp',
|
|
'../tests/GrSurfaceTest.cpp',
|
|
'../tests/HashCacheTest.cpp',
|
|
'../tests/ImageCacheTest.cpp',
|
|
'../tests/ImageDecodingTest.cpp',
|
|
'../tests/ImageFilterTest.cpp',
|
|
'../tests/InfRectTest.cpp',
|
|
'../tests/JpegTest.cpp',
|
|
'../tests/LListTest.cpp',
|
|
'../tests/LayerDrawLooperTest.cpp',
|
|
'../tests/MD5Test.cpp',
|
|
'../tests/MathTest.cpp',
|
|
'../tests/MatrixTest.cpp',
|
|
'../tests/Matrix44Test.cpp',
|
|
'../tests/MemoryTest.cpp',
|
|
'../tests/MemsetTest.cpp',
|
|
'../tests/MessageBusTest.cpp',
|
|
'../tests/MetaDataTest.cpp',
|
|
'../tests/MipMapTest.cpp',
|
|
'../tests/OnceTest.cpp',
|
|
'../tests/OSPathTest.cpp',
|
|
'../tests/PackBitsTest.cpp',
|
|
'../tests/PaintTest.cpp',
|
|
'../tests/ParsePathTest.cpp',
|
|
'../tests/PathCoverageTest.cpp',
|
|
'../tests/PathMeasureTest.cpp',
|
|
'../tests/PathTest.cpp',
|
|
'../tests/PathUtilsTest.cpp',
|
|
'../tests/PDFPrimitivesTest.cpp',
|
|
'../tests/PictureTest.cpp',
|
|
'../tests/PictureUtilsTest.cpp',
|
|
'../tests/PipeTest.cpp',
|
|
'../tests/PixelRefTest.cpp',
|
|
'../tests/PointTest.cpp',
|
|
'../tests/PremulAlphaRoundTripTest.cpp',
|
|
'../tests/QuickRejectTest.cpp',
|
|
'../tests/RandomTest.cpp',
|
|
'../tests/Reader32Test.cpp',
|
|
'../tests/ReadPixelsTest.cpp',
|
|
'../tests/ReadWriteAlphaTest.cpp',
|
|
'../tests/RefCntTest.cpp',
|
|
'../tests/RefDictTest.cpp',
|
|
'../tests/RegionTest.cpp',
|
|
'../tests/ResourceCacheTest.cpp',
|
|
'../tests/RoundRectTest.cpp',
|
|
'../tests/RTreeTest.cpp',
|
|
'../tests/SHA1Test.cpp',
|
|
'../tests/ScalarTest.cpp',
|
|
'../tests/ShaderImageFilterTest.cpp',
|
|
'../tests/ShaderOpacityTest.cpp',
|
|
'../tests/Sk64Test.cpp',
|
|
'../tests/skia_test.cpp',
|
|
'../tests/SortTest.cpp',
|
|
'../tests/SrcOverTest.cpp',
|
|
'../tests/StreamTest.cpp',
|
|
'../tests/StringTest.cpp',
|
|
'../tests/StrokeTest.cpp',
|
|
'../tests/SurfaceTest.cpp',
|
|
'../tests/Test.cpp',
|
|
'../tests/Test.h',
|
|
'../tests/TestSize.cpp',
|
|
'../tests/TileGridTest.cpp',
|
|
'../tests/TLSTest.cpp',
|
|
'../tests/TSetTest.cpp',
|
|
'../tests/ToUnicode.cpp',
|
|
'../tests/Typeface.cpp',
|
|
'../tests/UnicodeTest.cpp',
|
|
'../tests/UnitTestTest.cpp',
|
|
'../tests/UtilsTest.cpp',
|
|
'../tests/WArrayTest.cpp',
|
|
'../tests/WritePixelsTest.cpp',
|
|
'../tests/Writer32Test.cpp',
|
|
'../tests/XfermodeTest.cpp',
|
|
|
|
# Needed for PipeTest.
|
|
'../src/pipe/utils/SamplePipeControllers.cpp',
|
|
],
|
|
'dependencies': [
|
|
'skia_lib.gyp:skia_lib',
|
|
'flags.gyp:flags',
|
|
'experimental.gyp:experimental',
|
|
'pdf.gyp:pdf',
|
|
'tools.gyp:picture_utils',
|
|
],
|
|
'conditions': [
|
|
[ 'skia_gpu == 1', {
|
|
'include_dirs': [
|
|
'../src/gpu',
|
|
],
|
|
}],
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
# Local Variables:
|
|
# tab-width:2
|
|
# indent-tabs-mode:nil
|
|
# End:
|
|
# vim: set expandtab tabstop=2 shiftwidth=2:
|