Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 22245)
+++ wp-includes/theme.php	(working copy)
@@ -1350,6 +1350,23 @@
 				define( 'BACKGROUND_IMAGE', $args[0]['default-image'] );
 
 			break;
+		case 'post-thumbnails':
+			if ( $args !== true ) {
+				// merge in support for new post types
+				$support = get_theme_support( 'post-thumbnails' );
+				if ( is_array( $support ) && is_array( $support[0] ) ) {
+					// currently enabled for specific post types, merge
+					if ( is_string( $args[0] ) ) {
+						$args[0] = array( $args[0] );
+					}
+					$args[0] = array_unique( array_merge( $support[0], $args[0] ) );
+				}
+				else if ( $support ) {
+					// currently enabled for all post types, keep as is
+					$args = true;
+				}
+			}
+			break;
 	}
 
 	$_wp_theme_features[ $feature ] = $args;
@@ -1438,7 +1455,10 @@
 	if ( in_array( $feature, array( 'editor-style', 'widgets', 'menus' ) ) )
 		return false;
 
-	return _remove_theme_support( $feature );
+	if ( func_num_args() == 2 )
+		return _remove_theme_support( $feature, array_slice( func_get_args(), 1 ) );
+	else
+		return _remove_theme_support( $feature );
 }
 
 /**
@@ -1476,6 +1496,45 @@
 			remove_action( 'admin_menu', array( $GLOBALS['custom_background'], 'init' ) );
 			unset( $GLOBALS['custom_background'] );
 			break;
+
+		case 'post-thumbnails':
+			if ( func_num_args() == 2 ) {
+				$support = get_theme_support( 'post-thumbnails' );
+				$post_types = array_slice( func_get_args(), 1 );
+				$post_types = $post_types[0][0];
+				switch ( $support ) {
+					case ( $support === true ):
+						// thumbnails globally enabled, cannot disable for post type
+						return new WP_Error( 'remove_theme_support_error', __( 'post-thumbnails are enabled for all post types (try using remove_post_type_support( "my-post-type", "thumbnails" ); instead).' ) );
+						break;
+					case ( $support === false ):
+						// thumbnails globally disabled
+						return new WP_Error( 'remove_theme_support_warn', __( 'post-thumbnails are disabled for all post types' ) );
+						break;
+					default:
+						// thumbnails enabled for specific post types
+						if ( is_array( $support ) && is_array( $support[0] ) && is_array( $post_types ) ) {
+							$_post_types = $found = array();
+							foreach ( $support[0] as $_post_type ) {
+								if ( in_array( $_post_type, $post_types ) )
+									$found[] = $_post_type;
+								else
+									$_post_types[] = $_post_type;
+							}
+							if ( count( $post_types ) != count( $found ) ) {
+								// some post types weren't found
+								$diff = array_diff( $post_types, $found );
+								return new WP_Error( 'remove_theme_support_warn', __( 'post-thumbnails were already disabled for reuested post type(s)' ) , array( 'post-thumbnails' => $post_types, 'already-disabled' => $diff ) );
+							}
+							else {
+								$_wp_theme_features[ 'post-thumbnails' ] = array( $_post_types );
+								// have to get out early to avoid unsetting the feature entirely
+								return true;
+							}
+						}
+				}
+			}
+			break;
 	}
 
 	unset( $_wp_theme_features[ $feature ] );
