Lines Matching refs:frame
64 public Frame retainFrame(Frame frame) {
65 return super.retainFrame(frame);
69 public Frame releaseFrame(Frame frame) {
70 if (frame.isReusable()) {
71 int refCount = frame.decRefCount();
72 if (refCount == 0 && frame.hasNativeAllocation()) {
73 if (!storeFrame(frame)) {
74 frame.releaseNativeAllocation();
81 super.releaseFrame(frame);
83 return frame;
87 for (Frame frame : mAvailableFrames.values()) {
88 frame.releaseNativeAllocation();
98 private boolean storeFrame(Frame frame) {
100 // Make sure this frame alone does not exceed capacity
101 int frameSize = frame.getFormat().getSize();
106 // Drop frames if adding this frame would exceed capacity
113 // Store new frame
114 frame.onFrameStore();
116 mAvailableFrames.put(mTimeStamp, frame);
124 Frame frame = mAvailableFrames.get(oldest);
125 mStorageSize -= frame.getFormat().getSize();
126 frame.releaseNativeAllocation();
131 // Look for a frame that is compatible with the requested format
134 Frame frame = entry.getValue();
136 if (frame.getFormat().isReplaceableBy(format)) {
137 // Check that binding is compatible (if frame is bound)
138 if ((bindingType == frame.getBindingType())
139 && (bindingType == Frame.NO_BINDING || bindingId == frame.getBindingId())) {
142 super.retainFrame(frame);
144 frame.onFrameFetch();
145 frame.reset(format);
147 return frame;