skia2/gyp
commit-bot@chromium.org 50a3043194 We want to give SkPixelRef a way to signal over to GrResourceCache that it's become pointless to keep around textures based on that SkPixelRef when its pixels change, so that it can be a good citizen and free those textures.
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
2013-10-24 17:44:27 +00:00
..
android_deps.gyp Update DEPS and GYP to use the copy of Android in platform_tools. 2013-05-02 12:27:21 +00:00
android_system.gyp Update DEPS and GYP to use the copy of Android in platform_tools. 2013-05-02 12:27:21 +00:00
angle.gyp Refactor skia_warnings_as_errors 2013-03-22 13:16:06 +00:00
animator.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
apptype_console.gypi Update Skia Android tools. 2013-08-12 12:30:04 +00:00
bench.gyp refactor duplication (shouldSkip and skip_name) into a utility function 2013-07-24 17:24:23 +00:00
bench.gypi Bench baseline for mostly 0 image. 2013-09-25 21:42:12 +00:00
chromeos_deps.gyp GYP Changes and Scripts for Compiling Skia for ChromeOS 2013-06-11 15:52:19 +00:00
cityhash.gyp Re-land r9059 with empty cityhash.gyp, instead of deleted cityhash.gyp 2013-05-08 16:04:02 +00:00
common_conditions.gypi Clean up SkTypes.h. 2013-10-11 18:50:45 +00:00
common_variables.gypi skia/trunk changes for generic sanitizer gyp flag. 2013-10-08 15:16:36 +00:00
common.gypi Remove uses of GR_RELEASE. 2013-09-03 23:32:08 +00:00
core.gyp ARM Skia NEON patches - 30 - Xfermode: NEON modeprocs 2013-10-17 16:29:34 +00:00
core.gypi We want to give SkPixelRef a way to signal over to GrResourceCache that it's become pointless to keep around textures based on that SkPixelRef when its pixels change, so that it can be a good citizen and free those textures. 2013-10-24 17:44:27 +00:00
debugger.gyp Revert r11342 (Add infrastructure for testing the debugger code) due to build breakages 2013-09-18 13:28:10 +00:00
dm.gyp DM: add --serialize 2013-10-21 18:40:25 +00:00
effects.gyp add support for high quality image filtering on the GPU 2013-09-04 19:23:53 +00:00
effects.gypi Remove SkLumaXfermode. 2013-10-14 13:11:11 +00:00
everything.gyp Fix DM build failures: 2013-10-16 18:21:03 +00:00
experimental.gyp SkiaExamples improvements. 2013-07-24 17:48:03 +00:00
FileReaderApp.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
flags.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
fontconfig.gyp Sanitizing source files in Housekeeper-Nightly 2013-08-21 07:01:29 +00:00
freetype.gyp Add libpoppler for PDF rendering, take 2 2013-08-20 18:57:01 +00:00
freetype.gypi Sanitizing source files in Housekeeper-Nightly 2013-08-21 07:01:29 +00:00
gm.gyp Create new target to hold gpu test code, enable direct testing of GrEffects in GM. 2013-08-21 19:27:48 +00:00
gmslides.gypi [PDF] Add unpremultiply support and a GM (try5) 2013-10-24 15:20:00 +00:00
gpu.gyp Replace GR_*_BUILD by their SK_BUILD_FOR_* equivalents. 2013-09-25 20:57:51 +00:00
gpu.gypi GrTHashCache -> GrTHashTable 2013-10-21 21:04:06 +00:00
gputest.gyp Fix android doubly defined empty string due to static lib and shared lib thing. 2013-08-21 20:50:50 +00:00
iconv.gyp Sanitizing source files in Housekeeper-Nightly 2013-08-21 07:01:29 +00:00
images.gyp Don't require getLength on Mac. 2013-08-28 19:13:13 +00:00
jsoncpp.gyp quiet down more third-party warnings in poppler and jsoncpp 2013-09-30 18:19:26 +00:00
libjpeg.gyp Sanitizing source files in Housekeeper-Nightly 2013-06-11 07:01:17 +00:00
libwebp.gyp update gyp for ARM builds to be more well defined. 2013-07-31 12:57:27 +00:00
lua.gyp use define to work-around localeconf() missingness in android 2013-05-15 20:55:49 +00:00
most.gyp Update Skia Android tools. 2013-08-12 12:30:04 +00:00
nacl.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
opts.gyp ARM Skia NEON patches - 30 - Xfermode: NEON modeprocs 2013-10-17 16:29:34 +00:00
pathops_unittest.gyp path ops work in progress 2013-10-02 14:49:34 +00:00
pathops_unittest.gypi path ops work in progress 2013-10-02 14:49:34 +00:00
pathops.gypi path ops work in progress 2013-09-16 15:55:01 +00:00
pdf.gyp Add SkPDFDeviceFlatenner which extends SkPDFDevice to add support to flatten the path and the text when we have perspective. 2013-10-14 13:42:12 +00:00
pdf.gypi Add SkPDFDeviceFlatenner which extends SkPDFDevice to add support to flatten the path and the text when we have perspective. 2013-10-14 13:42:12 +00:00
pdfviewer_lib.gyp pdfviewer: do not submit, uploaded for backup, and will be done actually after I refactor the params for functions, to put the char* params in a structure: report errors and warnings in pdf, infrastructure 2013-09-13 19:33:42 +00:00
pdfviewer.gyp pdfviewer: (cleanup) put the gyp for library code in a separate file 2013-08-16 16:13:44 +00:00
pixman_test.gyp GYP Changes and Scripts for Compiling Skia for ChromeOS 2013-06-11 15:52:19 +00:00
poppler.gyp quiet down more third-party warnings in poppler and jsoncpp 2013-09-30 18:19:26 +00:00
ports.gyp allow both GDI and DW fontmgrs at the same time 2013-08-21 15:20:43 +00:00
public_headers.gypi Remove unused header SkImageTypes.h 2013-10-16 17:02:28 +00:00
SampleApp.gyp I'm investigating how to make the IPC transfer a bit more secure on the 2013-09-19 18:40:49 +00:00
sfnt.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
shapeops_demo.gyp GYP Changes and Scripts for Compiling Skia for ChromeOS 2013-06-11 15:52:19 +00:00
shapeops_edge.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
shapeops_tool.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
SimpleCocoaApp.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
SimpleiOSApp.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
skia_lib.gyp refactor gyp to isolate freetype usage 2013-07-22 14:12:56 +00:00
svg.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
tests.gyp We want to give SkPixelRef a way to signal over to GrResourceCache that it's become pointless to keep around textures based on that SkPixelRef when its pixels change, so that it can be a good citizen and free those textures. 2013-10-24 17:44:27 +00:00
tools.gyp Make image decoding more fault resistant, less verbose. 2013-10-04 12:46:45 +00:00
utils.gyp Add a buffered SkStream class. 2013-09-26 21:35:39 +00:00
views_animated.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
views.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
xml.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00
xps.gyp Prepare skia for shared library build on android 2013-06-03 12:10:19 +00:00
zlib.gyp Update obvious deps. 2013-07-22 14:39:45 +00:00