arch: fix sim_x11events calls but sim_x11initialize() hasn't ready
Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
e02a5a70eb
commit
9e39600c83
@ -68,8 +68,9 @@ static int b_useshm;
|
||||
* Name: sim_x11createframe
|
||||
****************************************************************************/
|
||||
|
||||
static inline int sim_x11createframe(void)
|
||||
static inline Display *sim_x11createframe(void)
|
||||
{
|
||||
Display *display;
|
||||
XGCValues gcval;
|
||||
char *argv[2] =
|
||||
{
|
||||
@ -82,18 +83,18 @@ static inline int sim_x11createframe(void)
|
||||
XTextProperty iconprop;
|
||||
XSizeHints hints;
|
||||
|
||||
g_display = XOpenDisplay(NULL);
|
||||
if (g_display == NULL)
|
||||
display = XOpenDisplay(NULL);
|
||||
if (display == NULL)
|
||||
{
|
||||
syslog(LOG_ERR, "Unable to open display.\n");
|
||||
return -1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_screen = DefaultScreen(g_display);
|
||||
g_window = XCreateSimpleWindow(g_display, DefaultRootWindow(g_display),
|
||||
g_screen = DefaultScreen(display);
|
||||
g_window = XCreateSimpleWindow(display, DefaultRootWindow(display),
|
||||
0, 0, g_fbpixelwidth, g_fbpixelheight, 2,
|
||||
BlackPixel(g_display, g_screen),
|
||||
BlackPixel(g_display, g_screen));
|
||||
BlackPixel(display, g_screen),
|
||||
BlackPixel(display, g_screen));
|
||||
|
||||
XStringListToTextProperty(&winname, 1, &winprop);
|
||||
XStringListToTextProperty(&iconname, 1, &iconprop);
|
||||
@ -102,18 +103,18 @@ static inline int sim_x11createframe(void)
|
||||
hints.width = hints.min_width = hints.max_width = g_fbpixelwidth;
|
||||
hints.height = hints.min_height = hints.max_height = g_fbpixelheight;
|
||||
|
||||
XSetWMProperties(g_display, g_window, &winprop, &iconprop, argv, 1,
|
||||
XSetWMProperties(display, g_window, &winprop, &iconprop, argv, 1,
|
||||
&hints, NULL, NULL);
|
||||
|
||||
XMapWindow(g_display, g_window);
|
||||
XMapWindow(display, g_window);
|
||||
|
||||
/* Select window input events */
|
||||
|
||||
#if defined(CONFIG_SIM_AJOYSTICK)
|
||||
XSelectInput(g_display, g_window,
|
||||
XSelectInput(display, g_window,
|
||||
ButtonPressMask | ButtonReleaseMask | PointerMotionMask);
|
||||
#else
|
||||
XSelectInput(g_display, g_window,
|
||||
XSelectInput(display, g_window,
|
||||
ButtonPressMask | ButtonReleaseMask | PointerMotionMask |
|
||||
KeyPressMask | KeyReleaseMask);
|
||||
#endif
|
||||
@ -122,19 +123,19 @@ static inline int sim_x11createframe(void)
|
||||
|
||||
#if defined(CONFIG_SIM_TOUCHSCREEN) || defined(CONFIG_SIM_AJOYSTICK) || \
|
||||
defined(CONFIG_SIM_BUTTONS)
|
||||
XAllowEvents(g_display, AsyncBoth, CurrentTime);
|
||||
XAllowEvents(display, AsyncBoth, CurrentTime);
|
||||
|
||||
/* Grab mouse button 1, enabling mouse-related events */
|
||||
|
||||
XGrabButton(g_display, Button1, AnyModifier, g_window, 1,
|
||||
XGrabButton(display, Button1, AnyModifier, g_window, 1,
|
||||
ButtonPressMask | ButtonReleaseMask | ButtonMotionMask,
|
||||
GrabModeAsync, GrabModeAsync, None, None);
|
||||
#endif
|
||||
|
||||
gcval.graphics_exposures = 0;
|
||||
g_gc = XCreateGC(g_display, g_window, GCGraphicsExposures, &gcval);
|
||||
g_gc = XCreateGC(display, g_window, GCGraphicsExposures, &gcval);
|
||||
|
||||
return 0;
|
||||
return display;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -166,9 +167,9 @@ static void sim_x11traperrors(void)
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_SIM_X11NOSHM
|
||||
static int sim_x11untraperrors(void)
|
||||
static int sim_x11untraperrors(Display *display)
|
||||
{
|
||||
XSync(g_display, 0);
|
||||
XSync(display, 0);
|
||||
XSetErrorHandler(NULL);
|
||||
return g_xerror;
|
||||
}
|
||||
@ -180,6 +181,11 @@ static int sim_x11untraperrors(void)
|
||||
|
||||
static void sim_x11uninit(void)
|
||||
{
|
||||
if (g_display == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SIM_X11NOSHM
|
||||
if (g_shmcheckpoint > 4)
|
||||
{
|
||||
@ -239,7 +245,8 @@ static void sim_x11uninitialize(void)
|
||||
* Name: sim_x11mapsharedmem
|
||||
****************************************************************************/
|
||||
|
||||
static inline int sim_x11mapsharedmem(int depth, unsigned int fblen)
|
||||
static inline int sim_x11mapsharedmem(Display *display,
|
||||
int depth, unsigned int fblen)
|
||||
{
|
||||
#ifndef CONFIG_SIM_X11NOSHM
|
||||
Status result;
|
||||
@ -250,16 +257,16 @@ static inline int sim_x11mapsharedmem(int depth, unsigned int fblen)
|
||||
b_useshm = 0;
|
||||
|
||||
#ifndef CONFIG_SIM_X11NOSHM
|
||||
if (XShmQueryExtension(g_display))
|
||||
if (XShmQueryExtension(display))
|
||||
{
|
||||
b_useshm = 1;
|
||||
|
||||
sim_x11traperrors();
|
||||
g_image = XShmCreateImage(g_display,
|
||||
DefaultVisual(g_display, g_screen),
|
||||
g_image = XShmCreateImage(display,
|
||||
DefaultVisual(display, g_screen),
|
||||
depth, ZPixmap, NULL, &g_xshminfo,
|
||||
g_fbpixelwidth, g_fbpixelheight);
|
||||
if (sim_x11untraperrors())
|
||||
if (sim_x11untraperrors(display))
|
||||
{
|
||||
sim_x11uninitialize();
|
||||
goto shmerror;
|
||||
@ -297,8 +304,8 @@ static inline int sim_x11mapsharedmem(int depth, unsigned int fblen)
|
||||
g_xshminfo.readOnly = 0;
|
||||
|
||||
sim_x11traperrors();
|
||||
result = XShmAttach(g_display, &g_xshminfo);
|
||||
if (sim_x11untraperrors() || !result)
|
||||
result = XShmAttach(display, &g_xshminfo);
|
||||
if (sim_x11untraperrors(display) || !result)
|
||||
{
|
||||
sim_x11uninitialize();
|
||||
goto shmerror;
|
||||
@ -318,7 +325,7 @@ shmerror:
|
||||
|
||||
g_framebuffer = (unsigned char *)malloc(fblen);
|
||||
|
||||
g_image = XCreateImage(g_display, DefaultVisual(g_display, g_screen),
|
||||
g_image = XCreateImage(display, DefaultVisual(display, g_screen),
|
||||
depth, ZPixmap, 0, (char *)g_framebuffer,
|
||||
g_fbpixelwidth, g_fbpixelheight,
|
||||
8, 0);
|
||||
@ -352,8 +359,8 @@ int sim_x11initialize(unsigned short width, unsigned short height,
|
||||
unsigned short *stride)
|
||||
{
|
||||
XWindowAttributes windowattributes;
|
||||
Display *display;
|
||||
int depth;
|
||||
int ret;
|
||||
|
||||
/* Save inputs */
|
||||
|
||||
@ -362,15 +369,15 @@ int sim_x11initialize(unsigned short width, unsigned short height,
|
||||
|
||||
/* Create the X11 window */
|
||||
|
||||
ret = sim_x11createframe();
|
||||
if (ret < 0)
|
||||
display = sim_x11createframe();
|
||||
if (display == NULL)
|
||||
{
|
||||
return ret;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Determine the supported pixel bpp of the current window */
|
||||
|
||||
XGetWindowAttributes(g_display, DefaultRootWindow(g_display),
|
||||
XGetWindowAttributes(display, DefaultRootWindow(display),
|
||||
&windowattributes);
|
||||
|
||||
/* Get the pixel depth. If the depth is 24-bits, use 32 because X expects
|
||||
@ -389,9 +396,10 @@ int sim_x11initialize(unsigned short width, unsigned short height,
|
||||
|
||||
/* Map the window to shared memory */
|
||||
|
||||
sim_x11mapsharedmem(windowattributes.depth, *fblen);
|
||||
sim_x11mapsharedmem(display, windowattributes.depth, *fblen);
|
||||
|
||||
*fbmem = (void *)g_framebuffer;
|
||||
g_display = display;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -406,6 +414,11 @@ int sim_x11cmap(unsigned short first, unsigned short len,
|
||||
Colormap cmap;
|
||||
int ndx;
|
||||
|
||||
if (g_display == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Convert each color to X11 scaling */
|
||||
|
||||
cmap = DefaultColormap(g_display, g_screen);
|
||||
@ -438,8 +451,13 @@ int sim_x11cmap(unsigned short first, unsigned short len,
|
||||
* Name: sim_x11update
|
||||
****************************************************************************/
|
||||
|
||||
void sim_x11update(void)
|
||||
int sim_x11update(void)
|
||||
{
|
||||
if (g_display == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SIM_X11NOSHM
|
||||
if (b_useshm)
|
||||
{
|
||||
@ -454,4 +472,6 @@ void sim_x11update(void)
|
||||
}
|
||||
|
||||
XSync(g_display, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -343,17 +343,17 @@ static int sim_setcursor(struct fb_vtable_s *vtable,
|
||||
void sim_x11loop(void)
|
||||
{
|
||||
#ifdef CONFIG_SIM_X11FB
|
||||
if (g_planeinfo.fbmem != NULL)
|
||||
{
|
||||
static clock_t last;
|
||||
clock_t now = clock_systime_ticks();
|
||||
static clock_t last;
|
||||
clock_t now = clock_systime_ticks();
|
||||
|
||||
if (now - last >= MSEC2TICK(16))
|
||||
if (now - last >= MSEC2TICK(16))
|
||||
{
|
||||
if (sim_x11update() > 0)
|
||||
{
|
||||
sim_x11update();
|
||||
fb_pollnotify(&g_fbobject);
|
||||
last = now;
|
||||
}
|
||||
|
||||
last = now;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ void sim_registerblockdevice(void);
|
||||
int sim_x11initialize(unsigned short width, unsigned short height,
|
||||
void **fbmem, size_t *fblen, unsigned char *bpp,
|
||||
unsigned short *stride);
|
||||
void sim_x11update(void);
|
||||
int sim_x11update(void);
|
||||
#ifdef CONFIG_FB_CMAP
|
||||
int sim_x11cmap(unsigned short first, unsigned short len,
|
||||
unsigned char *red, unsigned char *green,
|
||||
|
@ -433,16 +433,13 @@ static int sim_setcontrast(struct lcd_dev_s *dev, unsigned int contrast)
|
||||
void sim_x11loop(void)
|
||||
{
|
||||
#ifdef CONFIG_SIM_X11FB
|
||||
if (g_planeinfo.buffer != NULL)
|
||||
{
|
||||
static clock_t last;
|
||||
clock_t now = clock_systime_ticks();
|
||||
static clock_t last;
|
||||
clock_t now = clock_systime_ticks();
|
||||
|
||||
if (now - last >= MSEC2TICK(16))
|
||||
{
|
||||
sim_x11update();
|
||||
last = now;
|
||||
}
|
||||
if (now - last >= MSEC2TICK(16))
|
||||
{
|
||||
sim_x11update();
|
||||
last = now;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user