struct amigadisplay
{
- bool picasso_requested_on;
+ volatile bool picasso_requested_on;
bool picasso_requested_forced_on;
bool picasso_on;
int picasso_redraw_necessary;
struct amigadisplay *ad = &adisplays[monid];
if (ad->picasso_on && ad->picasso_requested_on) {
lockrtg();
- struct picasso96_state_struct *state = &picasso96_state[monid];
- picasso_flushpixels(idx, gfxmem_banks[idx]->start + natmem_offset, state->XYOffset - gfxmem_banks[idx]->start, false);
- ad->pending_render = true;
+ if (ad->picasso_requested_on) {
+ struct picasso96_state_struct *state = &picasso96_state[monid];
+ picasso_flushpixels(idx, gfxmem_banks[idx]->start + natmem_offset, state->XYOffset - gfxmem_banks[idx]->start, false);
+ ad->pending_render = true;
+ }
unlockrtg();
}
}
}
}
+ lockrtg();
+
rtg_index = -1;
if (savestate_state != STATE_RESTORE) {
uaegfx_base = 0;
resetpalette(state);
InitPicasso96(monid);
}
+
if (is_uaegfx_active() && currprefs.rtgboards[0].monitor_id > 0) {
close_rtg(currprefs.rtgboards[0].monitor_id);
}
+
+ for (int i = 0; i < MAX_AMIGADISPLAYS; i++) {
+ struct amigadisplay *ad = &adisplays[i];
+ ad->picasso_requested_on = false;
+ }
+
+ unlockrtg();
}
void uaegfx_install_code (uaecptr start)