Index: media.api.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/media.api.php,v
retrieving revision 1.5
diff -u -p -r1.5 media.api.php
--- media.api.php	13 Aug 2010 15:28:17 -0000	1.5
+++ media.api.php	19 Jan 2011 05:41:50 -0000
@@ -83,4 +83,14 @@ function hook_media_browser_plugin_info(
  */
 function media_media_operations() {
   
-}
\ No newline at end of file
+}
+
+/**
+ * Allows modules to invalidate caches of rendered media.
+ *
+ * @param $fid
+ *   The fid of the media being updated or deleted, when FALSE the hook is
+ *   being triggered by a change that affects all rendered media.
+ */
+function hook_media_invalidate_caches($fid = FALSE) {
+}
Index: media.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/media.module,v
retrieving revision 1.68
diff -u -p -r1.68 media.module
--- media.module	14 Jan 2011 03:25:09 -0000	1.68
+++ media.module	19 Jan 2011 05:41:51 -0000
@@ -389,7 +389,7 @@ function media_file_delete($file) {
  */
 function media_image_style_flush($style) {
   // When a image style is flushed, clear the filter and field caches.
-  media_filter_invalidate_caches();
+  media_invalidate_cache();
 }
 
 /**
@@ -401,7 +401,7 @@ function media_image_style_flush($style)
  */
 function media_file_style_flush($style) {
   // When a file style is flushed, clear the filter and field caches.
-  media_filter_invalidate_caches();
+  media_invalidate_cache();
 }
 
 /**
@@ -413,7 +413,7 @@ function media_file_style_flush($style) 
  */
 function media_styles_style_flush($style) {
   // When a style is flushed, clear the filter and field caches.
-  media_filter_invalidate_caches();
+  media_invalidate_cache();
 }
 
 /**
@@ -589,7 +589,7 @@ function media_save($media) {
   }
   else {
     field_attach_update('media', $media);
-    media_filter_invalidate_caches($media->fid);
+    media_invalidate_cache($media->fid);
   }
 
   // Since the Media module can't make files into fieldable entities directly
@@ -964,12 +964,10 @@ function media_save_attached_file($file)
       file_usage_delete((object)(array) $media, 'file', 'media', $media->fid);
 
       // Also clear cached text formats from here.
-      media_filter_invalidate_caches($media->fid);
+      media_invalidate_cache($media->fid);
     }
   }
 
-
-
   return $media;
 }
 
@@ -1095,13 +1093,13 @@ function media_element_process(&$element
  * Implements hook_filter_info().
  *
  * For performance, the media filter is allowed to be cached by default. See
- * media_filter_invalidate_caches() for details. Some sites may use advanced
+ * media_filter_invalidate_caches() for details. Some sites may use advanced
  * media styles with rendering implentations that differs per theme or based on
  * other runtime information. For these sites, it may be necessary to implement
  * a module with a hook_filter_info_alter() implementation that sets
  * $info['media_filter']['cache'] to FALSE.
  *
- * @see media_filter_invalidate_caches()
+ * @see media_filter_invalidate_caches()
  */
 function media_filter_info() {
   $filters['media_filter'] = array(
@@ -1218,3 +1216,17 @@ function media_flush_caches() {
   // even if the post that references them is edited or deleted.
   db_delete('media_filter_usage')->condition('timestamp', REQUEST_TIME - 86400 * 120, '<')->execute();
 }
+
+/**
+ * Invalidates media caches.
+ *
+ * @param $fid
+ *   Optional media fid to allow selective clearing of caches.
+ */
+function media_invalidate_cache($fid = FALSE) {
+  // Clear cached filters.
+  media_filter_invalidate_caches($fid);
+  // Allow other modules to invalidate caches that include rendered media.
+  module_invoke_all('media_invalidate_cache', $fid);
+}
+
