Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/BitmapImage.h

Issue 1857543002: Don't recreate SkImages for high-res (GIF, WEBP...) animations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review #4 fix. Thanks @pkasting. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
3 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved.
4 * Copyright (C) 2008-2009 Torch Mobile, Inc. 4 * Copyright (C) 2008-2009 Torch Mobile, Inc.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 // Called before accessing m_frames[index]. Returns false on index out of bo unds. 128 // Called before accessing m_frames[index]. Returns false on index out of bo unds.
129 bool ensureFrameIsCached(size_t index); 129 bool ensureFrameIsCached(size_t index);
130 130
131 // Returns the total number of bytes allocated for all framebuffers, i.e. 131 // Returns the total number of bytes allocated for all framebuffers, i.e.
132 // the sum of m_source.frameBytesAtIndex(...) for all frames. This is 132 // the sum of m_source.frameBytesAtIndex(...) for all frames. This is
133 // returned as an int for caller convenience, to allow safely subtracting 133 // returned as an int for caller convenience, to allow safely subtracting
134 // the values from successive calls as signed expressions. 134 // the values from successive calls as signed expressions.
135 int totalFrameBytes(); 135 int totalFrameBytes();
136 136
137 // Called to invalidate cached data. When |destroyAll| is true, we wipe out 137 // Called to wipe out the entire frame buffer cache and tell the image
138 // the entire frame buffer cache and tell the image source to destroy 138 // source to destroy everything; this is used when e.g. we want to free
139 // everything; this is used when e.g. we want to free some room in the image 139 // some room in the image cache.
140 // cache. If |destroyAll| is false, we delete frames except the current 140 void destroyDecodedData() override;
141 // frame; this is used while animating large images to keep memory footprint
142 // low; the decoder should preserve the current frame and may preserve some
143 // other frames to avoid redecoding the whole image on every frame.
144 void destroyDecodedData(bool destroyAll) override;
145
146 // If the image is large enough, calls destroyDecodedData().
147 void destroyDecodedDataIfNecessary();
148 141
149 // Notifies observers that the memory footprint has changed. 142 // Notifies observers that the memory footprint has changed.
150 void notifyMemoryChanged(int delta); 143 void notifyMemoryChanged(int delta);
151 144
152 // Whether or not size is available yet. 145 // Whether or not size is available yet.
153 bool isSizeAvailable(); 146 bool isSizeAvailable();
154 147
155 // Animation. 148 // Animation.
156 int repetitionCount(bool imageKnownToBeComplete); // |imageKnownToBeComplet e| should be set if the caller knows the entire image has been decoded. 149 int repetitionCount(bool imageKnownToBeComplete); // |imageKnownToBeComplet e| should be set if the caller knows the entire image has been decoded.
157 bool shouldAnimate(); 150 bool shouldAnimate();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 bool m_sizeAvailable : 1; // Whether or not we can obtain the size of the fi rst image frame yet from ImageIO. 182 bool m_sizeAvailable : 1; // Whether or not we can obtain the size of the fi rst image frame yet from ImageIO.
190 mutable bool m_hasUniformFrameSize : 1; 183 mutable bool m_hasUniformFrameSize : 1;
191 mutable bool m_haveFrameCount : 1; 184 mutable bool m_haveFrameCount : 1;
192 }; 185 };
193 186
194 DEFINE_IMAGE_TYPE_CASTS(BitmapImage); 187 DEFINE_IMAGE_TYPE_CASTS(BitmapImage);
195 188
196 } // namespace blink 189 } // namespace blink
197 190
198 #endif 191 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698