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

Side by Side Diff: include/gpu/GrSurface.h

Issue 1169553003: add callbacks to Images that wrap client-provided content (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: privatize Created 5 years, 6 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
« no previous file with comments | « include/core/SkImageInfo.h ('k') | src/gpu/GrSurface.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 8
9 #ifndef GrSurface_DEFINED 9 #ifndef GrSurface_DEFINED
10 #define GrSurface_DEFINED 10 #define GrSurface_DEFINED
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 /** 120 /**
121 * After this returns any pending writes to the surface will be issued to th e backend 3D API and 121 * After this returns any pending writes to the surface will be issued to th e backend 3D API and
122 * if the surface has MSAA it will be resolved. 122 * if the surface has MSAA it will be resolved.
123 */ 123 */
124 void prepareForExternalRead(); 124 void prepareForExternalRead();
125 125
126 /** Access methods that are only to be used within Skia code. */ 126 /** Access methods that are only to be used within Skia code. */
127 inline GrSurfacePriv surfacePriv(); 127 inline GrSurfacePriv surfacePriv();
128 inline const GrSurfacePriv surfacePriv() const; 128 inline const GrSurfacePriv surfacePriv() const;
129 129
130 typedef void* ReleaseCtx;
131 typedef void (*ReleaseProc)(ReleaseCtx);
132
133 void setRelease(ReleaseProc proc, ReleaseCtx ctx) {
134 fReleaseProc = proc;
135 fReleaseCtx = ctx;
136 }
137
130 protected: 138 protected:
131 // Methods made available via GrSurfacePriv 139 // Methods made available via GrSurfacePriv
132 SkImageInfo info() const; 140 SkImageInfo info() const;
133 bool savePixels(const char* filename); 141 bool savePixels(const char* filename);
134 bool hasPendingRead() const; 142 bool hasPendingRead() const;
135 bool hasPendingWrite() const; 143 bool hasPendingWrite() const;
136 bool hasPendingIO() const; 144 bool hasPendingIO() const;
137 145
138 // Provides access to methods that should be public within Skia code. 146 // Provides access to methods that should be public within Skia code.
139 friend class GrSurfacePriv; 147 friend class GrSurfacePriv;
140 148
141 GrSurface(GrGpu* gpu, LifeCycle lifeCycle, const GrSurfaceDesc& desc) 149 GrSurface(GrGpu* gpu, LifeCycle lifeCycle, const GrSurfaceDesc& desc)
142 : INHERITED(gpu, lifeCycle) 150 : INHERITED(gpu, lifeCycle)
143 , fDesc(desc) { 151 , fDesc(desc)
152 , fReleaseProc(NULL)
153 , fReleaseCtx(NULL)
154 {}
155
156 ~GrSurface() override {
157 // check that invokeReleaseProc has been called (if needed)
158 SkASSERT(NULL == fReleaseProc);
144 } 159 }
145 160
146 GrSurfaceDesc fDesc; 161 GrSurfaceDesc fDesc;
147 162
163 void onRelease() override;
164 void onAbandon() override;
165
148 private: 166 private:
167 void invokeReleaseProc() {
168 if (fReleaseProc) {
169 fReleaseProc(fReleaseCtx);
170 fReleaseProc = NULL;
171 }
172 }
173
174 ReleaseProc fReleaseProc;
175 ReleaseCtx fReleaseCtx;
176
149 typedef GrGpuResource INHERITED; 177 typedef GrGpuResource INHERITED;
150 }; 178 };
151 179
152 #endif 180 #endif
OLDNEW
« no previous file with comments | « include/core/SkImageInfo.h ('k') | src/gpu/GrSurface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698