linux-dist: Fix indentation and reformat code
This commit is contained in:
parent
5fbfc0fb8b
commit
ab33f473b3
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue