frontend: make platform menu customizations more explicit
[pcsx_rearmed.git] / frontend / plugin_lib.c
index bf213dd..5017a1b 100644 (file)
 #include <unistd.h>
 #include <pthread.h>
 
+#include "libpicofe/fonts.h"
+#include "libpicofe/input.h"
+#include "libpicofe/plat.h"
+#include "libpicofe/arm/neon_scale2x.h"
+#include "libpicofe/arm/neon_eagle2x.h"
 #include "plugin_lib.h"
-#include "linux/fbdev.h"
-#include "common/fonts.h"
-#include "common/input.h"
-#include "common/plat.h"
 #include "menu.h"
 #include "main.h"
 #include "plat.h"
 #include "pcnt.h"
 #include "pl_gun_ts.h"
-#include "libpicofe/arm/neon_scale2x.h"
-#include "libpicofe/arm/neon_eagle2x.h"
 #include "../libpcsxcore/new_dynarec/new_dynarec.h"
 #include "../libpcsxcore/psemu_plugin_defs.h"
 #include "../plugins/gpulib/cspace.h"
@@ -249,6 +248,8 @@ static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
        int dstride = pl_vout_w, h1 = h;
        int doffs;
 
+       pcnt_start(PCNT_BLIT);
+
        if (dest == NULL)
                goto out;
 
@@ -312,6 +313,8 @@ static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
        pl_print_hud(w * pl_vout_scale, h * pl_vout_scale, 0);
 
 out:
+       pcnt_end(PCNT_BLIT);
+
        // let's flip now
        pl_vout_buf = plat_gvideo_flip();
        pl_rearmed_cbs.flip_cnt++;
@@ -471,11 +474,6 @@ static void update_input(void)
        emu_set_action(emu_act);
 
        in_keystate = actions[IN_BINDTYPE_PLAYER12];
-#ifdef X11
-       extern int x11_update_keys(unsigned int *action);
-       in_keystate |= x11_update_keys(&emu_act);
-       emu_set_action(emu_act);
-#endif
 }
 #else /* MAEMO */
 static void update_input(void)
@@ -606,16 +604,31 @@ void pl_timing_prepare(int is_pal_)
 
 static void pl_text_out16_(int x, int y, const char *text)
 {
-       int i, l, len = strlen(text), w = pl_vout_w;
-       unsigned short *screen = (unsigned short *)pl_vout_buf + x + y * w;
+       int i, l, w = pl_vout_w;
+       unsigned short *screen;
        unsigned short val = 0xffff;
 
-       for (i = 0; i < len; i++, screen += 8)
+       x &= ~1;
+       screen = (unsigned short *)pl_vout_buf + x + y * w;
+       for (i = 0; ; i++, screen += 8)
        {
+               char c = text[i];
+               if (c == 0)
+                       break;
+               if (c == ' ')
+                       continue;
+
                for (l = 0; l < 8; l++)
                {
-                       unsigned char fd = fontdata8x8[text[i] * 8 + l];
+                       unsigned char fd = fontdata8x8[c * 8 + l];
                        unsigned short *s = screen + l * w;
+                       unsigned int *s32 = (void *)s;
+
+                       s32[0] = (s32[0] >> 1) & 0x7bef7bef;
+                       s32[1] = (s32[1] >> 1) & 0x7bef7bef;
+                       s32[2] = (s32[2] >> 1) & 0x7bef7bef;
+                       s32[3] = (s32[3] >> 1) & 0x7bef7bef;
+
                        if (fd&0x80) s[0] = val;
                        if (fd&0x40) s[1] = val;
                        if (fd&0x20) s[2] = val;