linux-dist: Fix indentation and reformat code

This commit is contained in:
Jan Holthuis 2015-08-12 01:57:29 +02:00
parent 5fbfc0fb8b
commit ab33f473b3
1 changed files with 691 additions and 645 deletions

View File

@ -19,8 +19,6 @@
#include <emscripten.h>
#endif
#if defined(SUPPORT_X11)
#include <X11/Xlib.h>
#include <X11/Xatom.h>
@ -42,17 +40,18 @@
#endif
#ifdef TARGET_PANDORA
#include <signal.h>
#include <execinfo.h>
#include <sys/soundcard.h>
#define WINDOW_WIDTH 800
#include <signal.h>
#include <execinfo.h>
#include <sys/soundcard.h>
#define WINDOW_WIDTH 800
#else
#define WINDOW_WIDTH 640
#define WINDOW_WIDTH 640
#endif
#define WINDOW_HEIGHT 480
void* x11_win=0,* x11_disp=0;
void* x11_win = 0;
void* x11_disp = 0;
void* libPvr_GetRenderTarget()
{
return x11_win;
@ -63,7 +62,7 @@ void* libPvr_GetRenderSurface()
return x11_disp;
}
int msgboxf(const wchar* text,unsigned int type,...)
int msgboxf(const wchar* text, unsigned int type, ...)
{
va_list args;
@ -84,7 +83,8 @@ u32 vks[4];
s8 joyx[4],joyy[4];
u8 rt[4],lt[4];
enum DCPad {
enum DCPad
{
Btn_C = 1,
Btn_B = 1<<1,
Btn_A = 1<<2,
@ -135,13 +135,13 @@ const u32* JMapAxis=JMapAxis_USB;
void SetupInput()
{
for (int port=0;port<4;port++)
for (int port=0; port<4; port++)
{
kcode[port]=0xFFFF;
rt[port]=0;
lt[port]=0;
}
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
#ifdef TARGET_PANDORA
const char* device = "/dev/input/event4";
#else
@ -150,13 +150,15 @@ void SetupInput()
char name[256]= "Unknown";
if ((kbfd = open(device, O_RDONLY)) > 0) {
fcntl(kbfd,F_SETFL,O_NONBLOCK);
if(ioctl(kbfd, EVIOCGNAME(sizeof(name)), name) < 0) {
if ((kbfd = open(device, O_RDONLY)) > 0)
{
fcntl(kbfd, F_SETFL, O_NONBLOCK);
if(ioctl(kbfd, EVIOCGNAME(sizeof(name)), name) < 0)
{
perror("evdev ioctl");
}
printf("The device on %s says its name is %s\n",device, name);
printf("The device on %s says its name is %s\n", device, name);
}
else
@ -165,43 +167,45 @@ void SetupInput()
}
// Open joystick device
JoyFD = open("/dev/input/js0",O_RDONLY);
JoyFD = open("/dev/input/js0", O_RDONLY);
if(JoyFD>=0)
if(JoyFD >= 0)
{
int AxisCount,ButtonCount;
int AxisCount, ButtonCount;
char Name[128];
AxisCount = 0;
ButtonCount = 0;
Name[0] = '\0';
fcntl(JoyFD,F_SETFL,O_NONBLOCK);
ioctl(JoyFD,JSIOCGAXES,&AxisCount);
ioctl(JoyFD,JSIOCGBUTTONS,&ButtonCount);
ioctl(JoyFD,JSIOCGNAME(sizeof(Name)),&Name);
fcntl(JoyFD, F_SETFL, O_NONBLOCK);
ioctl(JoyFD, JSIOCGAXES, &AxisCount);
ioctl(JoyFD, JSIOCGBUTTONS, &ButtonCount);
ioctl(JoyFD, JSIOCGNAME(sizeof(Name)), &Name);
printf("SDK: Found '%s' joystick with %d axis and %d buttons\n",Name,AxisCount,ButtonCount);
printf("SDK: Found '%s' joystick with %d axis and %d buttons\n", Name, AxisCount, ButtonCount);
if (strcmp(Name,"Microsoft X-Box 360 pad")==0)
if (strcmp(Name, "Microsoft X-Box 360 pad") == 0)
{
JMapBtn=JMapBtn_360;
JMapAxis=JMapAxis_360;
JMapBtn = JMapBtn_360;
JMapAxis = JMapAxis_360;
printf("Using Xbox 360 map\n");
}
}
#endif
#endif
}
bool HandleKb(u32 port) {
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
bool HandleKb(u32 port)
{
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
if (kbfd < 0)
{
return false;
}
input_event ie;
#if defined(TARGET_GCW0)
#define KEY_A 0x1D
#define KEY_B 0x38
#define KEY_X 0x2A
@ -217,179 +221,203 @@ bool HandleKb(u32 port) {
#define KEY_LOCK 0x77 // Note that KEY_LOCK is a switch and remains pressed until it's switched back
static int keys[13];
while(read(kbfd,&ie,sizeof(ie))==sizeof(ie)) {
while(read(kbfd, &ie, sizeof(ie)) == sizeof(ie))
{
//printf("type %i key %i state %i\n", ie.type, ie.code, ie.value);
if (ie.type=EV_KEY)
switch (ie.code) {
case KEY_SELECT: keys[9]=ie.value; break;
case KEY_UP: keys[1]=ie.value; break;
case KEY_DOWN: keys[2]=ie.value; break;
case KEY_LEFT: keys[3]=ie.value; break;
case KEY_RIGHT: keys[4]=ie.value; break;
case KEY_Y:keys[5]=ie.value; break;
case KEY_B:keys[6]=ie.value; break;
case KEY_A: keys[7]=ie.value; break;
case KEY_X: keys[8]=ie.value; break;
case KEY_START: keys[12]=ie.value; break;
if (ie.type = EV_KEY)
{
switch (ie.code)
{
case KEY_SELECT: keys[ 9] = ie.value; break;
case KEY_UP: keys[ 1] = ie.value; break;
case KEY_DOWN: keys[ 2] = ie.value; break;
case KEY_LEFT: keys[ 3] = ie.value; break;
case KEY_RIGHT: keys[ 4] = ie.value; break;
case KEY_Y: keys[ 5] = ie.value; break;
case KEY_B: keys[ 6] = ie.value; break;
case KEY_A: keys[ 7] = ie.value; break;
case KEY_X: keys[ 8] = ie.value; break;
case KEY_START: keys[12] = ie.value; break;
}
}
if (keys[6]) { kcode[port] &= ~Btn_A; }
if (keys[7]) { kcode[port] &= ~Btn_B; }
if (keys[5]) { kcode[port] &= ~Btn_Y; }
if (keys[8]) { kcode[port] &= ~Btn_X; }
if (keys[1]) { kcode[port] &= ~DPad_Up; }
if (keys[2]) { kcode[port] &= ~DPad_Down; }
if (keys[3]) { kcode[port] &= ~DPad_Left; }
if (keys[4]) { kcode[port] &= ~DPad_Right; }
if (keys[12]){ kcode[port] &= ~Btn_Start; }
if (keys[9]){ die("death by escape key"); }
if (keys[10]) rt[port]=255;
if (keys[11]) lt[port]=255;
}
if (keys[ 6]) { kcode[port] &= ~Btn_A; }
if (keys[ 7]) { kcode[port] &= ~Btn_B; }
if (keys[ 5]) { kcode[port] &= ~Btn_Y; }
if (keys[ 8]) { kcode[port] &= ~Btn_X; }
if (keys[ 1]) { kcode[port] &= ~DPad_Up; }
if (keys[ 2]) { kcode[port] &= ~DPad_Down; }
if (keys[ 3]) { kcode[port] &= ~DPad_Left; }
if (keys[ 4]) { kcode[port] &= ~DPad_Right; }
if (keys[12]) { kcode[port] &= ~Btn_Start; }
if (keys[ 9]) { die("death by escape key"); }
if (keys[10]) { rt[port] = 255; }
if (keys[11]) { lt[port] = 255; }
return true;
#elif defined(TARGET_PANDORA)
static int keys[13];
while(read(kbfd,&ie,sizeof(ie))==sizeof(ie)) {
while(read(kbfd,&ie,sizeof(ie))==sizeof(ie))
{
if (ie.type=EV_KEY)
//printf("type %i key %i state %i\n", ie.type, ie.code, ie.value);
switch (ie.code) {
case KEY_SPACE: keys[0]=ie.value; break;
case KEY_UP: keys[1]=ie.value; break;
case KEY_DOWN: keys[2]=ie.value; break;
case KEY_LEFT: keys[3]=ie.value; break;
case KEY_RIGHT: keys[4]=ie.value; break;
case KEY_PAGEUP:keys[5]=ie.value; break;
case KEY_PAGEDOWN:keys[6]=ie.value; break;
case KEY_END: keys[7]=ie.value; break;
case KEY_HOME: keys[8]=ie.value; break;
case KEY_MENU: keys[9]=ie.value; break;
case KEY_RIGHTSHIFT: keys[10]=ie.value; break;
case KEY_RIGHTCTRL: keys[11]=ie.value; break;
case KEY_LEFTALT: keys[12]=ie.value; break;
case KEY_SPACE: keys[ 0] = ie.value; break;
case KEY_UP: keys[ 1] = ie.value; break;
case KEY_DOWN: keys[ 2] = ie.value; break;
case KEY_LEFT: keys[ 3] = ie.value; break;
case KEY_RIGHT: keys[ 4] = ie.value; break;
case KEY_PAGEUP: keys[ 5] = ie.value; break;
case KEY_PAGEDOWN: keys[ 6] = ie.value; break;
case KEY_END: keys[ 7] = ie.value; break;
case KEY_HOME: keys[ 8] = ie.value; break;
case KEY_MENU: keys[ 9] = ie.value; break;
case KEY_RIGHTSHIFT: keys[10] = ie.value; break;
case KEY_RIGHTCTRL: keys[11] = ie.value; break;
case KEY_LEFTALT: keys[12] = ie.value; break;
}
}
if (keys[0]) { kcode[port] &= ~Btn_C; }
if (keys[6]) { kcode[port] &= ~Btn_A; }
if (keys[7]) { kcode[port] &= ~Btn_B; }
if (keys[5]) { kcode[port] &= ~Btn_Y; }
if (keys[8]) { kcode[port] &= ~Btn_X; }
if (keys[1]) { kcode[port] &= ~DPad_Up; }
if (keys[2]) { kcode[port] &= ~DPad_Down; }
if (keys[3]) { kcode[port] &= ~DPad_Left; }
if (keys[4]) { kcode[port] &= ~DPad_Right; }
if (keys[12]){ kcode[port] &= ~Btn_Start; }
if (keys[9]){ die("death by escape key"); }
if (keys[10]) rt[port]=255;
if (keys[11]) lt[port]=255;
if (keys[ 0]) { kcode[port] &= ~Btn_C; }
if (keys[ 6]) { kcode[port] &= ~Btn_A; }
if (keys[ 7]) { kcode[port] &= ~Btn_B; }
if (keys[ 5]) { kcode[port] &= ~Btn_Y; }
if (keys[ 8]) { kcode[port] &= ~Btn_X; }
if (keys[ 1]) { kcode[port] &= ~DPad_Up; }
if (keys[ 2]) { kcode[port] &= ~DPad_Down; }
if (keys[ 3]) { kcode[port] &= ~DPad_Left; }
if (keys[ 4]) { kcode[port] &= ~DPad_Right; }
if (keys[12]) { kcode[port] &= ~Btn_Start; }
if (keys[ 9]) { die("death by escape key"); }
if (keys[10]) { rt[port] = 255; }
if (keys[11]) { lt[port] = 255; }
return true;
#else
while(read(kbfd,&ie,sizeof(ie))==sizeof(ie)) {
while(read(kbfd, &ie, sizeof(ie)) == sizeof(ie))
{
printf("type %i key %i state %i\n", ie.type, ie.code, ie.value);
}
#endif
#endif
return true;
#endif
return true;
}
bool HandleJoystick(u32 port)
{
// Joystick must be connected
if(JoyFD<0) return false;
if(JoyFD < 0) {
return false;
}
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
#if HOST_OS != OS_DARWIN && !defined(TARGET_EMSCRIPTEN)
struct js_event JE;
while(read(JoyFD,&JE,sizeof(JE))==sizeof(JE))
if (JE.number<MAP_SIZE)
while(read(JoyFD, &JE, sizeof(JE)) == sizeof(JE))
if (JE.number < MAP_SIZE)
{
switch(JE.type & ~JS_EVENT_INIT)
{
case JS_EVENT_AXIS:
{
u32 mt=JMapAxis[JE.number]>>16;
u32 mo=JMapAxis[JE.number]&0xFFFF;
u32 mt = JMapAxis[JE.number] >> 16;
u32 mo = JMapAxis[JE.number] & 0xFFFF;
//printf("AXIS %d,%d\n",JE.number,JE.value);
s8 v=(s8)(JE.value/256); //-127 ... + 127 range
if (mt==0)
if (mt == 0)
{
kcode[port]|=mo;
kcode[port]|=mo*2;
kcode[port] |= mo;
kcode[port] |= mo*2;
if (v<-64)
{
kcode[port]&=~mo;
kcode[port] &= ~mo;
}
else if (v>64)
{
kcode[port]&=~(mo*2);
kcode[port] &= ~(mo*2);
}
// printf("Mapped to %d %d %d\n",mo,kcode[port]&mo,kcode[port]&(mo*2));
//printf("Mapped to %d %d %d\n",mo,kcode[port]&mo,kcode[port]&(mo*2));
}
else if (mt==1)
else if (mt == 1)
{
if (v>=0) v++; //up to 255
// printf("AXIS %d,%d Mapped to %d %d %d\n",JE.number,JE.value,mo,v,v+127);
if (mo==0)
lt[port]=v+127;
else if (mo==1)
rt[port]=v+127;
if (v >= 0)
{
v++; //up to 255
}
else if (mt==2)
//printf("AXIS %d,%d Mapped to %d %d %d\n",JE.number,JE.value,mo,v,v+127);
if (mo == 0)
{
lt[port] = (v + 127);
}
else if (mo == 1)
{
rt[port] = (v + 127);
}
}
else if (mt == 2)
{
// printf("AXIS %d,%d Mapped to %d %d [%d]",JE.number,JE.value,mo,v);
if (mo==0)
joyx[port]=v;
else if (mo==1)
joyy[port]=v;
if (mo == 0)
{
joyx[port] = v;
}
else if (mo == 1)
{
joyy[port] = v;
}
}
}
break;
case JS_EVENT_BUTTON:
{
u32 mt=JMapBtn[JE.number]>>16;
u32 mo=JMapBtn[JE.number]&0xFFFF;
u32 mt = JMapBtn[JE.number] >> 16;
u32 mo = JMapBtn[JE.number] & 0xFFFF;
// printf("BUTTON %d,%d\n",JE.number,JE.value);
if (mt==0)
if (mt == 0)
{
// printf("Mapped to %d\n",mo);
if (JE.value)
kcode[port]&=~mo;
{
kcode[port] &= ~mo;
}
else
kcode[port]|=mo;
{
kcode[port] |= mo;
}
}
else if (mt==1)
{
// printf("Mapped to %d %d\n",mo,JE.value?255:0);
if (mo==0)
lt[port]=JE.value?255:0;
else if (mo==1)
rt[port]=JE.value?255:0;
{
lt[port] = JE.value ? 255 : 0;
}
else if (mo==1)
{
rt[port] = JE.value ? 255 : 0;
}
}
}
break;
}
}
#endif
return true;
#endif
return true;
}
extern bool KillTex;
#ifdef TARGET_PANDORA
static Cursor CreateNullCursor(Display *display, Window root)
{
static Cursor CreateNullCursor(Display *display, Window root)
{
Pixmap cursormask;
XGCValues xgc;
GC gc;
@ -408,7 +436,7 @@ static Cursor CreateNullCursor(Display *display, Window root)
XFreePixmap(display,cursormask);
XFreeGC(display,gc);
return cursor;
}
}
#endif
int x11_dc_buttons = 0xFFFF;
@ -417,29 +445,30 @@ void UpdateInputState(u32 port)
{
static char key = 0;
kcode[port]= x11_dc_buttons;
rt[port]=0;
lt[port]=0;
kcode[port] = x11_dc_buttons;
rt[port] = 0;
lt[port] = 0;
#if defined(TARGET_EMSCRIPTEN)
#if defined(TARGET_EMSCRIPTEN)
return;
#endif
#endif
HandleJoystick(port);
HandleKb(port);
#if defined(TARGET_GCW0) || defined(TARGET_PANDORA)
return;
#endif
#if defined(TARGET_GCW0) || defined(TARGET_PANDORA)
return;
#endif
for(;;)
{
key = 0;
read(STDIN_FILENO, &key, 1);
if (0 == key || EOF == key) break;
if ('k' == key) KillTex=true;
if (0 == key || EOF == key) { break; }
if ('k' == key) { KillTex=true; }
#ifdef TARGET_PANDORA
#ifdef TARGET_PANDORA
if (' ' == key) { kcode[port] &= ~Btn_C; }
if ('6' == key) { kcode[port] &= ~Btn_A; }
if ('O' == key) { kcode[port] &= ~Btn_B; }
@ -450,41 +479,51 @@ return;
if ('D' == key) { kcode[port] &= ~DPad_Left; }
if ('C' == key) { kcode[port] &= ~DPad_Right; }
if ('q' == key){ die("death by escape key"); }
#endif
if ('q' == key) { die("death by escape key"); }
#endif
//if (0x1b == key){ die("death by escape key"); } //this actually quits when i press left for some reason
if ('a' == key) rt[port]=255;
if ('s' == key) lt[port]=255;
#if FEAT_SHREC != DYNAREC_NONE
if ('b' == key) emit_WriteCodeCache();
if ('n' == key) bm_Reset();
if ('m' == key) bm_Sort();
if (',' == key) { emit_WriteCodeCache(); bm_Sort(); }
#endif
if ('a' == key) { rt[port] = 255; }
if ('s' == key) { lt[port] = 255; }
#if FEAT_SHREC != DYNAREC_NONE
if ('b' == key) { emit_WriteCodeCache(); }
if ('n' == key) { bm_Reset(); }
if ('m' == key) { bm_Sort(); }
if (',' == key)
{
emit_WriteCodeCache();
bm_Sort();
}
#endif
}
}
void os_DoEvents()
{
#if defined(SUPPORT_X11)
if (x11_win) {
if (x11_win)
{
//Handle X11
XEvent e;
if(XCheckWindowEvent((Display*)x11_disp, (Window)x11_win, KeyPressMask | KeyReleaseMask, &e))
{
switch(e.type)
{
case KeyPress:
case KeyRelease:
{
int dc_key = x11_keymap[e.xkey.keycode];
if (e.type == KeyPress)
{
x11_dc_buttons &= ~dc_key;
}
else
{
x11_dc_buttons |= dc_key;
}
//printf("KEY: %d -> %d: %d\n",e.xkey.keycode, dc_key, x11_dc_buttons );
}
@ -505,15 +544,18 @@ void os_DoEvents()
void os_SetWindowText(const char * text)
{
if (0==x11_win || 0==x11_disp || 1)
{
printf("%s\n",text);
#if defined(SUPPORT_X11)
else if (x11_win) {
}
#if defined(SUPPORT_X11)
else if (x11_win)
{
XChangeProperty((Display*)x11_disp, (Window)x11_win,
XInternAtom((Display*)x11_disp, "WM_NAME", False), //WM_NAME,
XInternAtom((Display*)x11_disp, "UTF8_STRING", False), //UTF8_STRING,
8, PropModeReplace, (const unsigned char *)text, strlen(text));
}
#endif
#endif
}
@ -522,8 +564,8 @@ void* x11_glc;
int ndcid=0;
void os_CreateWindow()
{
#if defined(SUPPORT_X11)
if (cfgLoadInt("pvr","nox11",0)==0)
#if defined(SUPPORT_X11)
if (cfgLoadInt("pvr", "nox11", 0) == 0)
{
XInitThreads();
// X11 variables
@ -542,13 +584,13 @@ void os_CreateWindow()
int i32Depth;
// Initializes the display and screen
x11Display = XOpenDisplay( 0 );
if (!x11Display && !(x11Display = XOpenDisplay( ":0" )))
x11Display = XOpenDisplay(0);
if (!x11Display && !(x11Display = XOpenDisplay(":0")))
{
printf("Error: Unable to open X display\n");
return;
}
x11Screen = XDefaultScreen( x11Display );
x11Screen = XDefaultScreen(x11Display);
// Gets the window parameters
sRootWindow = RootWindow(x11Display, x11Screen);
@ -578,8 +620,8 @@ void os_CreateWindow()
int glx_major, glx_minor;
// FBConfigs were added in GLX version 1.3.
if ( !glXQueryVersion( x11Display, &glx_major, &glx_minor ) ||
( ( glx_major == 1 ) && ( glx_minor < 3 ) ) || ( glx_major < 1 ) )
if (!glXQueryVersion(x11Display, &glx_major, &glx_minor) ||
((glx_major == 1) && (glx_minor < 3)) || (glx_major < 1))
{
printf("Invalid GLX version");
exit(1);
@ -589,17 +631,17 @@ void os_CreateWindow()
GLXFBConfig* fbc = glXChooseFBConfig(x11Display, x11Screen, visual_attribs, &fbcount);
if (!fbc)
{
printf( "Failed to retrieve a framebuffer config\n" );
printf("Failed to retrieve a framebuffer config\n");
exit(1);
}
printf( "Found %d matching FB configs.\n", fbcount );
printf("Found %d matching FB configs.\n", fbcount);
GLXFBConfig bestFbc = fbc[ 0 ];
XFree( fbc );
GLXFBConfig bestFbc = fbc[0];
XFree(fbc);
// Get a visual
XVisualInfo *vi = glXGetVisualFromFBConfig( x11Display, bestFbc );
printf( "Chosen visual ID = 0x%x\n", vi->visualid );
XVisualInfo *vi = glXGetVisualFromFBConfig(x11Display, bestFbc);
printf("Chosen visual ID = 0x%x\n", vi->visualid);
depth = vi->depth;
@ -609,13 +651,13 @@ void os_CreateWindow()
#else
i32Depth = DefaultDepth(x11Display, x11Screen);
x11Visual = new XVisualInfo;
XMatchVisualInfo( x11Display, x11Screen, i32Depth, TrueColor, x11Visual);
XMatchVisualInfo(x11Display, x11Screen, i32Depth, TrueColor, x11Visual);
if (!x11Visual)
{
printf("Error: Unable to acquire visual\n");
return;
}
x11Colormap = XCreateColormap( x11Display, sRootWindow, x11Visual->visual, AllocNone );
x11Colormap = XCreateColormap(x11Display, sRootWindow, x11Visual->visual, AllocNone);
#endif
sWA.colormap = x11Colormap;
@ -625,22 +667,23 @@ void os_CreateWindow()
ui32Mask = CWBackPixel | CWBorderPixel | CWEventMask | CWColormap;
#ifdef TARGET_PANDORA
int width=800;
int height=480;
int width = 800;
int height = 480;
#else
int width=cfgLoadInt("x11","width", WINDOW_WIDTH);
int height=cfgLoadInt("x11","height", WINDOW_HEIGHT);
int width = cfgLoadInt("x11", "width", WINDOW_WIDTH);
int height = cfgLoadInt("x11", "height", WINDOW_HEIGHT);
#endif
if (width==-1)
if (width == -1)
{
width=XDisplayWidth(x11Display,x11Screen);
height=XDisplayHeight(x11Display,x11Screen);
width = XDisplayWidth(x11Display, x11Screen);
height = XDisplayHeight(x11Display, x11Screen);
}
// Creates the X11 window
x11Window = XCreateWindow( x11Display, RootWindow(x11Display, x11Screen), (ndcid%3)*640, (ndcid/3)*480, width, height,
x11Window = XCreateWindow(x11Display, RootWindow(x11Display, x11Screen), (ndcid%3)*640, (ndcid/3)*480, width, height,
0, depth, InputOutput, x11Visual->visual, ui32Mask, &sWA);
#ifdef TARGET_PANDORA
// fullscreen
Atom wmState = XInternAtom(x11Display, "_NET_WM_STATE", False);
@ -652,18 +695,15 @@ void os_CreateWindow()
XMapWindow(x11Display, x11Window);
#if !defined(GLES)
#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
glXCreateContextAttribsARBProc glXCreateContextAttribsARB = 0;
glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc)
glXGetProcAddressARB( (const GLubyte *) "glXCreateContextAttribsARB" );
verify( glXCreateContextAttribsARB != 0 );
int context_attribs[] = {
glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc)glXGetProcAddressARB((const GLubyte*)"glXCreateContextAttribsARB");
verify(glXCreateContextAttribsARB != 0);
int context_attribs[] =
{
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MINOR_VERSION_ARB, 1,
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,
@ -671,25 +711,27 @@ void os_CreateWindow()
None
};
x11_glc = glXCreateContextAttribsARB( x11Display, bestFbc, 0, True, context_attribs);
XSync( x11Display, False );
x11_glc = glXCreateContextAttribsARB(x11Display, bestFbc, 0, True, context_attribs);
XSync(x11Display, False);
if (!x11_glc) {
if (!x11_glc)
{
die("Failed to create GL3.1 context\n");
}
#endif
#endif
XFlush(x11Display);
//(EGLNativeDisplayType)x11Display;
x11_disp=(void*)x11Display;
x11_win=(void*)x11Window;
x11_disp = (void*)x11Display;
x11_win = (void*)x11Window;
}
else
{
printf("Not creating X11 window ..\n");
#endif
}
#endif
}
termios tios, orig_tios;
@ -739,53 +781,59 @@ int dc_init(int argc,wchar* argv[]);
void dc_run();
#ifdef TARGET_PANDORA
void gl_term();
void gl_term();
void clean_exit(int sig_num) {
void *array[10];
void clean_exit(int sig_num)
{
void* array[10];
size_t size;
// close files
if (JoyFD>=0) close(JoyFD);
if (kbfd>=0) close(kbfd);
if (JoyFD >= 0) { close(JoyFD); }
if (kbfd >= 0) { close(kbfd); }
// Close EGL context ???
if (sig_num!=0)
{
gl_term();
}
// close XWindow
if (x11_win) {
if (x11_win)
{
XDestroyWindow(x11_disp, x11_win);
x11_win = 0;
}
if (x11_disp) {
if (x11_disp)
{
XCloseDisplay(x11_disp);
x11_disp = 0;
}
// finish cleaning
if (sig_num!=0) {
if (sig_num!=0)
{
write(2, "\nSignal received\n", sizeof("\nSignal received\n"));
size = backtrace(array, 10);
backtrace_symbols_fd(array, size, STDERR_FILENO);
exit(1);
}
}
}
#endif
int main(int argc, wchar* argv[])
{
//if (argc==2)
//ndcid=atoi(argv[1]);
if (setup_curses() < 0) printf("failed to setup curses!\n");
#ifdef TARGET_PANDORA
if (setup_curses() < 0)
{
printf("failed to setup curses!\n");
}
#ifdef TARGET_PANDORA
signal(SIGSEGV, clean_exit);
signal(SIGKILL, clean_exit);
#endif
#endif
/* Set home dir */
string home = ".";
#if defined(USES_HOMEDIR)
if(getenv("HOME") != NULL)
@ -826,32 +874,30 @@ int main(int argc, wchar* argv[])
dc_init(argc,argv);
#if !defined(TARGET_EMSCRIPTEN)
#if !defined(TARGET_EMSCRIPTEN)
dc_run();
#else
#else
emscripten_set_main_loop(&dc_run, 100, false);
#endif
#endif
#ifdef TARGET_PANDORA
#ifdef TARGET_PANDORA
clean_exit(0);
#endif
#endif
return 0;
}
#endif
int get_mic_data(u8* buffer) { return 0; }
int push_vmu_screen(u8* buffer) { return 0; }
void os_DebugBreak()
{
#if !defined(TARGET_EMSCRIPTEN)
#if !defined(TARGET_EMSCRIPTEN)
raise(SIGTRAP);
#else
#else
printf("DEBUGBREAK!\n");
exit(-1);
#endif
#endif
}