setspecialmonitorpos(out);
if (locked && emulate_specialmonitors(vb, out)) {
if (!multimon) {
+ vb->tempbufferinuse = true;
vb = vidinfo->outbuffer = out;
}
- if (out->nativepositioning)
+ if (out->nativepositioning) {
setnativeposition(out);
- out->tempbufferinuse = true;
+ }
if (!ad->specialmonitoron) {
need_genlock_data = specialmonitor_need_genlock();
ad->specialmonitoron = true;
return set_ddraw(mon);
}
-static int oldtex_w, oldtex_h, oldtex_rtg;
+static int oldtex_w[MAX_AMIGAMONITORS], oldtex_h[MAX_AMIGAMONITORS], oldtex_rtg[MAX_AMIGAMONITORS];
static BOOL doInit(struct AmigaMonitor *mon)
{
init_colors(mon->monitor_id);
S2X_free(mon->monitor_id);
- oldtex_w = oldtex_h = -1;
+ for (int i = 0; i < MAX_AMIGAMONITORS; i++) {
+ oldtex_w[i] = oldtex_h[i] = -1;
+ }
if (mon->currentmode.flags & DM_D3D) {
int fmh = mon->screen_is_picasso ? 1 : currprefs.gf[ad->picasso_on].gfx_filter_filtermodeh + 1;
int fmv = mon->screen_is_picasso ? 1 : currprefs.gf[ad->picasso_on].gfx_filter_filtermodev + 1 - 1;
{
struct AmigaMonitor *mon = &AMonitors[monid];
struct picasso_vidbuf_description *vidinfo = &picasso_vidinfo[monid];
- struct vidbuf_description *avidinfo = &adisplays[0].gfxvidinfo;
+ struct vidbuf_description *avidinfo = &adisplays[monid].gfxvidinfo;
struct picasso96_state_struct *state = &picasso96_state[monid];
static bool graphicsbuffer_retry;
h = vb->outheight;
}
- if (oldtex_w == w && oldtex_h == h && oldtex_rtg == mon->screen_is_picasso)
+ if (oldtex_w[monid] == w && oldtex_h[monid] == h && oldtex_rtg[monid] == mon->screen_is_picasso)
return false;
if (!w || !h) {
- oldtex_w = w;
- oldtex_h = h;
- oldtex_rtg = mon->screen_is_picasso;
+ oldtex_w[monid] = w;
+ oldtex_h[monid] = h;
+ oldtex_rtg[monid] = mon->screen_is_picasso;
return false;
}
DirectDraw_ClearSurface (NULL);
}
- oldtex_w = w;
- oldtex_h = h;
- oldtex_rtg = mon->screen_is_picasso;
+ oldtex_w[monid] = w;
+ oldtex_h[monid] = h;
+ oldtex_rtg[monid] = mon->screen_is_picasso;
- write_log (_T("Buffer size (%d*%d) %s\n"), w, h, mon->screen_is_picasso ? _T("RTG") : _T("Native"));
+ write_log (_T("Buffer %d size (%d*%d) %s\n"), monid, w, h, mon->screen_is_picasso ? _T("RTG") : _T("Native"));
if ((mon->currentmode.flags & DM_SWSCALE) && !mon->screen_is_picasso) {
if (!S2X_init(mon->monitor_id, mon->currentmode.native_width, mon->currentmode.native_height, mon->currentmode.native_depth))