|
1 <HTML |
|
2 ><HEAD |
|
3 ><TITLE |
|
4 >SDL_LockSurface</TITLE |
|
5 ><META |
|
6 NAME="GENERATOR" |
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
8 "><LINK |
|
9 REL="HOME" |
|
10 TITLE="SDL Library Documentation" |
|
11 HREF="index.html"><LINK |
|
12 REL="UP" |
|
13 TITLE="Video" |
|
14 HREF="video.html"><LINK |
|
15 REL="PREVIOUS" |
|
16 TITLE="SDL_FreeSurface" |
|
17 HREF="sdlfreesurface.html"><LINK |
|
18 REL="NEXT" |
|
19 TITLE="SDL_UnlockSurface" |
|
20 HREF="sdlunlocksurface.html"></HEAD |
|
21 ><BODY |
|
22 CLASS="REFENTRY" |
|
23 BGCOLOR="#FFF8DC" |
|
24 TEXT="#000000" |
|
25 LINK="#0000ee" |
|
26 VLINK="#551a8b" |
|
27 ALINK="#ff0000" |
|
28 ><DIV |
|
29 CLASS="NAVHEADER" |
|
30 ><TABLE |
|
31 SUMMARY="Header navigation table" |
|
32 WIDTH="100%" |
|
33 BORDER="0" |
|
34 CELLPADDING="0" |
|
35 CELLSPACING="0" |
|
36 ><TR |
|
37 ><TH |
|
38 COLSPAN="3" |
|
39 ALIGN="center" |
|
40 >SDL Library Documentation</TH |
|
41 ></TR |
|
42 ><TR |
|
43 ><TD |
|
44 WIDTH="10%" |
|
45 ALIGN="left" |
|
46 VALIGN="bottom" |
|
47 ><A |
|
48 HREF="sdlfreesurface.html" |
|
49 ACCESSKEY="P" |
|
50 >Prev</A |
|
51 ></TD |
|
52 ><TD |
|
53 WIDTH="80%" |
|
54 ALIGN="center" |
|
55 VALIGN="bottom" |
|
56 ></TD |
|
57 ><TD |
|
58 WIDTH="10%" |
|
59 ALIGN="right" |
|
60 VALIGN="bottom" |
|
61 ><A |
|
62 HREF="sdlunlocksurface.html" |
|
63 ACCESSKEY="N" |
|
64 >Next</A |
|
65 ></TD |
|
66 ></TR |
|
67 ></TABLE |
|
68 ><HR |
|
69 ALIGN="LEFT" |
|
70 WIDTH="100%"></DIV |
|
71 ><H1 |
|
72 ><A |
|
73 NAME="SDLLOCKSURFACE" |
|
74 ></A |
|
75 >SDL_LockSurface</H1 |
|
76 ><DIV |
|
77 CLASS="REFNAMEDIV" |
|
78 ><A |
|
79 NAME="AEN1919" |
|
80 ></A |
|
81 ><H2 |
|
82 >Name</H2 |
|
83 >SDL_LockSurface -- Lock a surface for directly access.</DIV |
|
84 ><DIV |
|
85 CLASS="REFSYNOPSISDIV" |
|
86 ><A |
|
87 NAME="AEN1922" |
|
88 ></A |
|
89 ><H2 |
|
90 >Synopsis</H2 |
|
91 ><DIV |
|
92 CLASS="FUNCSYNOPSIS" |
|
93 ><A |
|
94 NAME="AEN1923" |
|
95 ></A |
|
96 ><P |
|
97 ></P |
|
98 ><PRE |
|
99 CLASS="FUNCSYNOPSISINFO" |
|
100 >#include "SDL.h"</PRE |
|
101 ><P |
|
102 ><CODE |
|
103 ><CODE |
|
104 CLASS="FUNCDEF" |
|
105 >int <B |
|
106 CLASS="FSFUNC" |
|
107 >SDL_LockSurface</B |
|
108 ></CODE |
|
109 >(SDL_Surface *surface);</CODE |
|
110 ></P |
|
111 ><P |
|
112 ></P |
|
113 ></DIV |
|
114 ></DIV |
|
115 ><DIV |
|
116 CLASS="REFSECT1" |
|
117 ><A |
|
118 NAME="AEN1929" |
|
119 ></A |
|
120 ><H2 |
|
121 >Description</H2 |
|
122 ><P |
|
123 ><TT |
|
124 CLASS="FUNCTION" |
|
125 >SDL_LockSurface</TT |
|
126 > sets up a surface for directly |
|
127 accessing the pixels. Between calls to <TT |
|
128 CLASS="FUNCTION" |
|
129 >SDL_LockSurface</TT |
|
130 > |
|
131 and <TT |
|
132 CLASS="FUNCTION" |
|
133 >SDL_UnlockSurface</TT |
|
134 >, you can write to and read from |
|
135 <TT |
|
136 CLASS="PARAMETER" |
|
137 ><I |
|
138 >surface-><TT |
|
139 CLASS="STRUCTFIELD" |
|
140 ><I |
|
141 >pixels</I |
|
142 ></TT |
|
143 ></I |
|
144 ></TT |
|
145 >, using the pixel format stored in |
|
146 <TT |
|
147 CLASS="PARAMETER" |
|
148 ><I |
|
149 >surface-><TT |
|
150 CLASS="STRUCTFIELD" |
|
151 ><I |
|
152 >format</I |
|
153 ></TT |
|
154 ></I |
|
155 ></TT |
|
156 >. Once you are done accessing the |
|
157 surface, you should use <TT |
|
158 CLASS="FUNCTION" |
|
159 >SDL_UnlockSurface</TT |
|
160 > to release it.</P |
|
161 ><P |
|
162 >Not all surfaces require locking. |
|
163 If <TT |
|
164 CLASS="LITERAL" |
|
165 >SDL_MUSTLOCK</TT |
|
166 >(<TT |
|
167 CLASS="PARAMETER" |
|
168 ><I |
|
169 >surface</I |
|
170 ></TT |
|
171 >) |
|
172 evaluates to <SPAN |
|
173 CLASS="RETURNVALUE" |
|
174 >0</SPAN |
|
175 >, then you can read and write to the |
|
176 surface at any time, and the pixel format of the surface will not change. </P |
|
177 ><P |
|
178 >No operating system or library calls should be made between lock/unlock |
|
179 pairs, as critical system locks may be held during this time.</P |
|
180 ><P |
|
181 >It should be noted, that since SDL 1.1.8 surface locks are recursive. This means that you can lock a surface multiple times, but each lock must have a match unlock. |
|
182 <PRE |
|
183 CLASS="PROGRAMLISTING" |
|
184 > . |
|
185 . |
|
186 SDL_LockSurface( surface ); |
|
187 . |
|
188 /* Surface is locked */ |
|
189 /* Direct pixel access on surface here */ |
|
190 . |
|
191 SDL_LockSurface( surface ); |
|
192 . |
|
193 /* More direct pixel access on surface */ |
|
194 . |
|
195 SDL_UnlockSurface( surface ); |
|
196 /* Surface is still locked */ |
|
197 /* Note: Is versions < 1.1.8, the surface would have been */ |
|
198 /* no longer locked at this stage */ |
|
199 . |
|
200 SDL_UnlockSurface( surface ); |
|
201 /* Surface is now unlocked */ |
|
202 . |
|
203 .</PRE |
|
204 ></P |
|
205 ></DIV |
|
206 ><DIV |
|
207 CLASS="REFSECT1" |
|
208 ><A |
|
209 NAME="AEN1947" |
|
210 ></A |
|
211 ><H2 |
|
212 >Return Value</H2 |
|
213 ><P |
|
214 ><TT |
|
215 CLASS="FUNCTION" |
|
216 >SDL_LockSurface</TT |
|
217 > returns <SPAN |
|
218 CLASS="RETURNVALUE" |
|
219 >0</SPAN |
|
220 >, |
|
221 or <SPAN |
|
222 CLASS="RETURNVALUE" |
|
223 >-1</SPAN |
|
224 > if the surface couldn't be locked.</P |
|
225 ></DIV |
|
226 ><DIV |
|
227 CLASS="REFSECT1" |
|
228 ><A |
|
229 NAME="AEN1953" |
|
230 ></A |
|
231 ><H2 |
|
232 >See Also</H2 |
|
233 ><P |
|
234 ><A |
|
235 HREF="sdlunlocksurface.html" |
|
236 ><TT |
|
237 CLASS="FUNCTION" |
|
238 >SDL_UnlockSurface</TT |
|
239 ></A |
|
240 ></P |
|
241 ></DIV |
|
242 ><DIV |
|
243 CLASS="NAVFOOTER" |
|
244 ><HR |
|
245 ALIGN="LEFT" |
|
246 WIDTH="100%"><TABLE |
|
247 SUMMARY="Footer navigation table" |
|
248 WIDTH="100%" |
|
249 BORDER="0" |
|
250 CELLPADDING="0" |
|
251 CELLSPACING="0" |
|
252 ><TR |
|
253 ><TD |
|
254 WIDTH="33%" |
|
255 ALIGN="left" |
|
256 VALIGN="top" |
|
257 ><A |
|
258 HREF="sdlfreesurface.html" |
|
259 ACCESSKEY="P" |
|
260 >Prev</A |
|
261 ></TD |
|
262 ><TD |
|
263 WIDTH="34%" |
|
264 ALIGN="center" |
|
265 VALIGN="top" |
|
266 ><A |
|
267 HREF="index.html" |
|
268 ACCESSKEY="H" |
|
269 >Home</A |
|
270 ></TD |
|
271 ><TD |
|
272 WIDTH="33%" |
|
273 ALIGN="right" |
|
274 VALIGN="top" |
|
275 ><A |
|
276 HREF="sdlunlocksurface.html" |
|
277 ACCESSKEY="N" |
|
278 >Next</A |
|
279 ></TD |
|
280 ></TR |
|
281 ><TR |
|
282 ><TD |
|
283 WIDTH="33%" |
|
284 ALIGN="left" |
|
285 VALIGN="top" |
|
286 >SDL_FreeSurface</TD |
|
287 ><TD |
|
288 WIDTH="34%" |
|
289 ALIGN="center" |
|
290 VALIGN="top" |
|
291 ><A |
|
292 HREF="video.html" |
|
293 ACCESSKEY="U" |
|
294 >Up</A |
|
295 ></TD |
|
296 ><TD |
|
297 WIDTH="33%" |
|
298 ALIGN="right" |
|
299 VALIGN="top" |
|
300 >SDL_UnlockSurface</TD |
|
301 ></TR |
|
302 ></TABLE |
|
303 ></DIV |
|
304 ></BODY |
|
305 ></HTML |
|
306 > |