Mercurial > sdl-ios-xcode
annotate src/video/SDL_clipboard.c @ 5004:0c72ae7b7cb2
Added native atomic operations for Windows, Mac OS X, and gcc compiler intrinsics.
Changed the CAS return value to bool, so it's efficient with OSAtomicCompareAndSwap32Barrier()
Added an atomic test adapted from code by Michael Davidsaver
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 16 Jan 2011 15:16:39 -0800 |
parents | b577f47379f3 |
children | b530ef003506 |
rev | line source |
---|---|
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 Copyright (C) 1997-2010 Sam Lantinga |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 #include "SDL_clipboard.h" |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 #include "SDL_sysvideo.h" |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 int |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 SDL_SetClipboardText(const char *text) |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 { |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
31 SDL_VideoDevice *_this = SDL_GetVideoDevice(); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
32 |
4500
eff4e88cc1e8
Added Windows clipboard support
Sam Lantinga <slouken@libsdl.org>
parents:
4495
diff
changeset
|
33 if (!text) { |
eff4e88cc1e8
Added Windows clipboard support
Sam Lantinga <slouken@libsdl.org>
parents:
4495
diff
changeset
|
34 text = ""; |
eff4e88cc1e8
Added Windows clipboard support
Sam Lantinga <slouken@libsdl.org>
parents:
4495
diff
changeset
|
35 } |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
36 if (_this->SetClipboardText) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
37 return _this->SetClipboardText(_this, text); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
38 } else { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
39 _this->clipboard_text = SDL_strdup(text); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
40 return 0; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
41 } |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 } |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 char * |
4506 | 45 SDL_GetClipboardText(void) |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 { |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
47 SDL_VideoDevice *_this = SDL_GetVideoDevice(); |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
49 if (_this->GetClipboardText) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
50 return _this->GetClipboardText(_this); |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 } else { |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
52 const char *text = _this->clipboard_text; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
53 if (!text) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
54 text = ""; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
55 } |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
56 return SDL_strdup(text); |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 } |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 } |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 SDL_bool |
4506 | 61 SDL_HasClipboardText(void) |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 { |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
63 SDL_VideoDevice *_this = SDL_GetVideoDevice(); |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
65 if (_this->HasClipboardText) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
66 return _this->HasClipboardText(_this); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
67 } else { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
68 if (_this->clipboard_text) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
69 return SDL_TRUE; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
70 } else { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
71 return SDL_FALSE; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
72 } |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4493
diff
changeset
|
73 } |
4493
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 } |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 |
f0b7c8d169f5
First pass at clipboard API, still very much in progress
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 /* vi: set ts=4 sw=4 expandtab: */ |