uae_u32 p96_rgbx16[65536];
uae_u32 p96rc[256], p96gc[256], p96bc[256];
+static int newcursor_x, newcursor_y;
static int cursorwidth, cursorheight, cursorok;
static uae_u8 *cursordata;
static uae_u32 cursorrgb[4], cursorrgbn[4];
D3D_setcursor(0, 0, 0, 0, 0, false, true);
}
-static int newcursor_x, newcursor_y;
-
static void mouseupdate(struct AmigaMonitor *mon)
{
struct picasso96_state_struct *state = &picasso96_state[mon->monitor_id];
struct picasso_vidbuf_description *vidinfo = &picasso_vidinfo[monid];
struct amigadisplay *ad = &adisplays[monid];
+ if (D3D_restore)
+ D3D_restore(monid, true);
if (doskip () && p96skipmode == 0) {
;
} else {
return;
if (uaegfx && uaegfx_active)
+ if (setupcursor_needed)
+ setupcursor();
mouseupdate(mon);
if (thisisvsync) {
}
if (uaegfx) {
- if (setupcursor_needed && uaegfx_active)
- setupcursor();
if (thisisvsync)
picasso_trigger_vblank();
}
struct picasso96_state_struct *state = &picasso96_state[currprefs.rtgboards[0].monitor_id];
uaecptr bi = trap_get_areg(ctx, 0);
boardinfo = bi;
- newcursor_x = (uae_s16)trap_get_word(ctx, bi + PSSO_BoardInfo_MouseX) - state->XOffset;
- newcursor_y = (uae_s16)trap_get_word(ctx, bi + PSSO_BoardInfo_MouseY) - state->YOffset;
+ int x = (uae_s16)trap_get_word(ctx, bi + PSSO_BoardInfo_MouseX) - state->XOffset;
+ int y = (uae_s16)trap_get_word(ctx, bi + PSSO_BoardInfo_MouseY) - state->YOffset;
+ newcursor_x = x;
+ newcursor_y = y;
if (!hwsprite)
return 0;
return 1;
}
}
- if (dst)
+ if (dst || render) {
gfx_unlock_picasso(monid, render);
+ }
+
if (dst && gwwcnt) {
vidinfo->full_refresh = 0;
}