Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
c9c3d038
Commit
c9c3d038
authored
Feb 01, 2011
by
Sam Lantinga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed spacing
parent
3a83076d
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
416 additions
and
420 deletions
+416
-420
SDL_uikitappdelegate.m
src/video/uikit/SDL_uikitappdelegate.m
+42
-43
SDL_uikitevents.m
src/video/uikit/SDL_uikitevents.m
+18
-19
SDL_uikitopengles.m
src/video/uikit/SDL_uikitopengles.m
+62
-64
SDL_uikitvideo.m
src/video/uikit/SDL_uikitvideo.m
+16
-16
SDL_uikitview.m
src/video/uikit/SDL_uikitview.m
+278
-278
No files found.
src/video/uikit/SDL_uikitappdelegate.m
View file @
c9c3d038
...
...
@@ -37,69 +37,68 @@ static char **forward_argv;
int
main
(
int
argc
,
char
**
argv
)
{
int
i
;
NSAutoreleasePool
*
pool
=
[[
NSAutoreleasePool
alloc
]
init
];
/* store arguments */
forward_argc
=
argc
;
forward_argv
=
(
char
**
)
malloc
((
argc
+
1
)
*
sizeof
(
char
*
));
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
forward_argv
[
i
]
=
malloc
(
(
strlen
(
argv
[
i
])
+
1
)
*
sizeof
(
char
));
strcpy
(
forward_argv
[
i
],
argv
[
i
]);
}
forward_argv
[
i
]
=
NULL
;
/* Give over control to run loop, SDLUIKitDelegate will handle most things from here */
UIApplicationMain
(
argc
,
argv
,
NULL
,
@"SDLUIKitDelegate"
);
[
pool
release
];
int
i
;
NSAutoreleasePool
*
pool
=
[[
NSAutoreleasePool
alloc
]
init
];
/* store arguments */
forward_argc
=
argc
;
forward_argv
=
(
char
**
)
malloc
((
argc
+
1
)
*
sizeof
(
char
*
));
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
forward_argv
[
i
]
=
malloc
(
(
strlen
(
argv
[
i
])
+
1
)
*
sizeof
(
char
));
strcpy
(
forward_argv
[
i
],
argv
[
i
]);
}
forward_argv
[
i
]
=
NULL
;
/* Give over control to run loop, SDLUIKitDelegate will handle most things from here */
UIApplicationMain
(
argc
,
argv
,
NULL
,
@"SDLUIKitDelegate"
);
[
pool
release
];
}
@implementation
SDLUIKitDelegate
/* convenience method */
+
(
SDLUIKitDelegate
*
)
sharedAppDelegate
{
/* the delegate is set in UIApplicationMain(), which is garaunteed to be called before this method */
return
(
SDLUIKitDelegate
*
)[[
UIApplication
sharedApplication
]
delegate
];
/* the delegate is set in UIApplicationMain(), which is garaunteed to be called before this method */
return
(
SDLUIKitDelegate
*
)[[
UIApplication
sharedApplication
]
delegate
];
}
-
(
id
)
init
{
self
=
[
super
init
];
return
self
;
self
=
[
super
init
];
return
self
;
}
-
(
void
)
postFinishLaunch
{
/* run the user's application, passing argc and argv */
int
exit_status
=
SDL_main
(
forward_argc
,
forward_argv
);
/* free the memory we used to hold copies of argc and argv */
int
i
;
for
(
i
=
0
;
i
<
forward_argc
;
i
++
)
{
free
(
forward_argv
[
i
]);
}
free
(
forward_argv
);
/* exit, passing the return status from the user's application */
exit
(
exit_status
);
/* run the user's application, passing argc and argv */
int
exit_status
=
SDL_main
(
forward_argc
,
forward_argv
);
/* free the memory we used to hold copies of argc and argv */
int
i
;
for
(
i
=
0
;
i
<
forward_argc
;
i
++
)
{
free
(
forward_argv
[
i
]);
}
free
(
forward_argv
);
/* exit, passing the return status from the user's application */
exit
(
exit_status
);
}
-
(
void
)
applicationDidFinishLaunching
:
(
UIApplication
*
)
application
{
/* Set working directory to resource path */
[[
NSFileManager
defaultManager
]
changeCurrentDirectoryPath
:
[[
NSBundle
mainBundle
]
resourcePath
]];
[
self
performSelector
:
@selector
(
postFinishLaunch
)
withObject
:
nil
/* Set working directory to resource path */
[[
NSFileManager
defaultManager
]
changeCurrentDirectoryPath
:
[[
NSBundle
mainBundle
]
resourcePath
]];
[
self
performSelector
:
@selector
(
postFinishLaunch
)
withObject
:
nil
afterDelay
:
0
.
0
];
}
-
(
void
)
applicationWillTerminate
:
(
UIApplication
*
)
application
{
SDL_SendQuit
();
/* hack to prevent automatic termination. See SDL_uikitevents.m for details */
longjmp
(
*
(
jump_env
()),
1
);
SDL_SendQuit
();
/* hack to prevent automatic termination. See SDL_uikitevents.m for details */
longjmp
(
*
(
jump_env
()),
1
);
}
-
(
void
)
applicationWillResignActive
:
(
UIApplication
*
)
application
...
...
src/video/uikit/SDL_uikitevents.m
View file @
c9c3d038
...
...
@@ -32,25 +32,24 @@
void
UIKit
_
PumpEvents
(
_
THIS
)
{
/*
When
the
user
presses
the
'
home
'
button
on
the
iPod
the
application
exits
--
immediatly
.
Unlike
in
Mac
OS
X
,
it
appears
there
is
no
way
to
cancel
the
termination
.
This
doesn
'
t
give
the
SDL
user
'
s
application
time
to
respond
to
an
SDL
_
Quit
event
.
So
what
we
do
is
that
in
the
UIApplicationDelegate
class
(
SDLUIApplicationDelegate
)
,
when
the
delegate
receives
the
ApplicationWillTerminate
message
,
we
execute
a
longjmp
statement
to
get
back
here
,
preventing
an
immediate
exit
.
*/
if
(
setjmp
(*jump_env()) == 0) {
/* if we're setting the jump, rather than jumping back */
SInt32 result;
do {
result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, TRUE);
} while(result == kCFRunLoopRunHandledSource);
}
/*
When
the
user
presses
the
'
home
'
button
on
the
iPod
the
application
exits
--
immediatly
.
Unlike
in
Mac
OS
X
,
it
appears
there
is
no
way
to
cancel
the
termination
.
This
doesn
'
t
give
the
SDL
user
'
s
application
time
to
respond
to
an
SDL
_
Quit
event
.
So
what
we
do
is
that
in
the
UIApplicationDelegate
class
(
SDLUIApplicationDelegate
)
,
when
the
delegate
receives
the
ApplicationWillTerminate
message
,
we
execute
a
longjmp
statement
to
get
back
here
,
preventing
an
immediate
exit
.
*/
if
(
setjmp
(*jump_env()) == 0) {
/* if we're setting the jump, rather than jumping back */
SInt32 result;
do {
result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, TRUE);
} while(result == kCFRunLoopRunHandledSource);
}
}
/* vi: set ts=4 sw=4 expandtab: */
src/video/uikit/SDL_uikitopengles.m
View file @
c9c3d038
...
...
@@ -35,42 +35,42 @@ static int UIKit_GL_Initialize(_THIS);
void
*
UIKit
_
GL
_
GetProcAddress
(
_
THIS
,
const
char
*
proc
)
{
/*
Look
through
all
SO
'
s
for
the
proc
symbol
.
Here
'
s
why
:
-
Looking
for
the
path
to
the
OpenGL
Library
seems
not
to
work
in
the
iPhone
Simulator
.
-
We
don
'
t
know
that
the
path
won
'
t
change
in
the
future
.
*/
{
/*
Look
through
all
SO
'
s
for
the
proc
symbol
.
Here
'
s
why
:
-
Looking
for
the
path
to
the
OpenGL
Library
seems
not
to
work
in
the
iPhone
Simulator
.
-
We
don
'
t
know
that
the
path
won
'
t
change
in
the
future
.
*/
return
SDL
_
LoadFunction
(
RTLD
_
DEFAULT
,
proc
)
;
}
/*
note
that
SDL
_
GL
_
Delete
context
makes
it
current
without
passing
the
window
note
that
SDL
_
GL
_
Delete
context
makes
it
current
without
passing
the
window
*/
int
UIKit
_
GL
_
MakeCurrent
(
_
THIS
,
SDL
_
Window
*
window
,
SDL
_
GLContext
context
)
{
if
(
context
)
{
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
[
data
->
view
setCurrentContext
]
;
}
else
{
[
EAGLContext
setCurrentContext
:
nil
]
;
}
if
(
context
)
{
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
[
data
->
view
setCurrentContext
]
;
}
else
{
[
EAGLContext
setCurrentContext
:
nil
]
;
}
return
0
;
}
int
UIKit
_
GL
_
LoadLibrary
(
_
THIS
,
const
char
*
path
)
{
/*
shouldn
'
t
be
passing
a
path
into
this
function
why
?
Because
we
'
ve
already
loaded
the
library
and
because
the
SDK
forbids
loading
an
external
SO
*/
/*
shouldn
'
t
be
passing
a
path
into
this
function
why
?
Because
we
'
ve
already
loaded
the
library
and
because
the
SDK
forbids
loading
an
external
SO
*/
if
(
path
!=
NULL
)
{
SDL
_
SetError
(
"iPhone GL Load Library just here for compatibility"
)
;
return
-
1
;
SDL
_
SetError
(
"iPhone GL Load Library just here for compatibility"
)
;
return
-
1
;
}
return
0
;
}
...
...
@@ -84,65 +84,63 @@ void UIKit_GL_SwapWindow(_THIS, SDL_Window * window)
SDL
_
UIKit
_
UpdateBatteryMonitoring
()
;
#endif
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
if
(
nil
==
data
->
view
)
{
return
;
}
[
data
->
view
swapBuffers
]
;
/*
since
now
we
'
ve
got
something
to
draw
make
the
window
visible
*/
[
data
->
uiwindow
makeKeyAndVisible
]
;
/*
we
need
to
let
the
event
cycle
run
,
or
the
OS
won
'
t
update
the
OpenGL
view
!
*/
SDL
_
PumpEvents
()
;
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
if
(
nil
==
data
->
view
)
{
return
;
}
[
data
->
view
swapBuffers
]
;
/*
since
now
we
'
ve
got
something
to
draw
make
the
window
visible
*/
[
data
->
uiwindow
makeKeyAndVisible
]
;
/*
we
need
to
let
the
event
cycle
run
,
or
the
OS
won
'
t
update
the
OpenGL
view
!
*/
SDL
_
PumpEvents
()
;
}
SDL
_
GLContext
UIKit
_
GL
_
CreateContext
(
_
THIS
,
SDL
_
Window
*
window
)
{
SDL
_
uikitopenglview
*
view
;
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
SDL
_
uikitopenglview
*
view
;
SDL
_
WindowData
*
data
=
(
SDL
_
WindowData
*
)
window
->
driverdata
;
UIScreen
*
uiscreen
=
(
UIScreen
*
)
window
->
display
->
driverdata
;
UIWindow
*
uiwindow
=
data
->
uiwindow
;
UIWindow
*
uiwindow
=
data
->
uiwindow
;
/*
construct
our
view
,
passing
in
SDL
'
s
OpenGL
configuration
data
*/
view
=
[[
SDL
_
uikitopenglview
alloc
]
initWithFrame
:
[
uiwindow
bounds
]
\
retainBacking
:
_
this
->
gl
_
config
.
retained
_
backing
\
rBits
:
_
this
->
gl
_
config
.
red
_
size
\
gBits
:
_
this
->
gl
_
config
.
green
_
size
\
bBits
:
_
this
->
gl
_
config
.
blue
_
size
\
aBits
:
_
this
->
gl
_
config
.
alpha
_
size
\
depthBits
:
_
this
->
gl
_
config
.
depth
_
size
]
;
data
->
view
=
view
;
/*
add
the
view
to
our
window
*/
[
uiwindow
addSubview
:
view
]
;
/*
Don
'
t
worry
,
the
window
retained
the
view
*/
[
view
release
]
;
if
(
UIKit
_
GL
_
MakeCurrent
(
_
this
,
window
,
view
)
<
0
)
{
retainBacking
:
_
this
->
gl
_
config
.
retained
_
backing
\
rBits
:
_
this
->
gl
_
config
.
red
_
size
\
gBits
:
_
this
->
gl
_
config
.
green
_
size
\
bBits
:
_
this
->
gl
_
config
.
blue
_
size
\
aBits
:
_
this
->
gl
_
config
.
alpha
_
size
\
depthBits
:
_
this
->
gl
_
config
.
depth
_
size
]
;
data
->
view
=
view
;
/*
add
the
view
to
our
window
*/
[
uiwindow
addSubview
:
view
]
;
/*
Don
'
t
worry
,
the
window
retained
the
view
*/
[
view
release
]
;
if
(
UIKit
_
GL
_
MakeCurrent
(
_
this
,
window
,
view
)
<
0
)
{
UIKit
_
GL
_
DeleteContext
(
_
this
,
view
)
;
return
NULL
;
}
/*
Make
this
window
the
current
mouse
focus
for
touch
input
*/
SDL
_
SetMouseFocus
(
window
)
;
SDL
_
SetKeyboardFocus
(
window
)
;
/*
Make
this
window
the
current
mouse
focus
for
touch
input
*/
SDL
_
SetMouseFocus
(
window
)
;
SDL
_
SetKeyboardFocus
(
window
)
;
return
view
;
return
view
;
}
void
UIKit
_
GL
_
DeleteContext
(
_
THIS
,
SDL
_
GLContext
context
)
{
/*
the
delegate
has
retained
the
view
,
this
will
release
him
*/
SDL
_
uikitopenglview
*
view
=
(
SDL
_
uikitopenglview
*
)
context
;
/*
this
will
also
delete
it
*/
[
view
removeFromSuperview
]
;
return
;
/*
the
delegate
has
retained
the
view
,
this
will
release
him
*/
SDL
_
uikitopenglview
*
view
=
(
SDL
_
uikitopenglview
*
)
context
;
/*
this
will
also
delete
it
*/
[
view
removeFromSuperview
]
;
}
src/video/uikit/SDL_uikitvideo.m
View file @
c9c3d038
...
...
@@ -56,7 +56,7 @@ BOOL SDL_UIKit_supports_multiple_displays = NO;
static
int
UIKit_Available
(
void
)
{
return
(
1
);
return
(
1
);
}
static
void
UIKit_DeleteDevice
(
SDL_VideoDevice
*
device
)
...
...
@@ -85,22 +85,22 @@ UIKit_CreateDevice(int devindex)
device
->
GetDisplayModes
=
UIKit_GetDisplayModes
;
device
->
SetDisplayMode
=
UIKit_SetDisplayMode
;
device
->
PumpEvents
=
UIKit_PumpEvents
;
device
->
CreateWindow
=
UIKit_CreateWindow
;
device
->
DestroyWindow
=
UIKit_DestroyWindow
;
device
->
CreateWindow
=
UIKit_CreateWindow
;
device
->
DestroyWindow
=
UIKit_DestroyWindow
;
device
->
GetWindowWMInfo
=
UIKit_GetWindowWMInfo
;
/* OpenGL (ES) functions */
device
->
GL_MakeCurrent
=
UIKit_GL_MakeCurrent
;
device
->
GL_SwapWindow
=
UIKit_GL_SwapWindow
;
device
->
GL_CreateContext
=
UIKit_GL_CreateContext
;
device
->
GL_DeleteContext
=
UIKit_GL_DeleteContext
;
device
->
GL_GetProcAddress
=
UIKit_GL_GetProcAddress
;
device
->
GL_LoadLibrary
=
UIKit_GL_LoadLibrary
;
device
->
free
=
UIKit_DeleteDevice
;
device
->
gl_config
.
accelerated
=
1
;
/* OpenGL (ES) functions */
device
->
GL_MakeCurrent
=
UIKit_GL_MakeCurrent
;
device
->
GL_SwapWindow
=
UIKit_GL_SwapWindow
;
device
->
GL_CreateContext
=
UIKit_GL_CreateContext
;
device
->
GL_DeleteContext
=
UIKit_GL_DeleteContext
;
device
->
GL_GetProcAddress
=
UIKit_GL_GetProcAddress
;
device
->
GL_LoadLibrary
=
UIKit_GL_LoadLibrary
;
device
->
free
=
UIKit_DeleteDevice
;
device
->
gl_config
.
accelerated
=
1
;
return
device
;
}
...
...
src/video/uikit/SDL_uikitview.m
View file @
c9c3d038
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment