DWORD top = rc2.top - mon->win_y_diff;
DWORD width = rc2.right - rc2.left;
DWORD height = rc2.bottom - rc2.top;
- if (store_xy++ && !mon->monitor_id) {
- regsetint (NULL, _T("MainPosX"), left);
- regsetint (NULL, _T("MainPosY"), top);
+ if (store_xy++) {
+ if (!mon->monitor_id) {
+ regsetint(NULL, _T("MainPosX"), left);
+ regsetint(NULL, _T("MainPosY"), top);
+ } else {
+ TCHAR buf[100];
+ _stprintf(buf, _T("MainPosX_%d"), mon->monitor_id);
+ regsetint(NULL, buf, left);
+ _stprintf(buf, _T("MainPosY_%d"), mon->monitor_id);
+ regsetint(NULL, buf, top);
+ }
}
changed_prefs.gfx_monitor[mon->monitor_id].gfx_size_win.x = left;
changed_prefs.gfx_monitor[mon->monitor_id].gfx_size_win.y = top;
if (mon->screen_is_initialized)
releasecapture(mon);
mon->screen_is_initialized = 0;
+ mon->screen_is_picasso = 0;
if (!mon->monitor_id) {
display_vblank_thread_kill();
#ifdef AVIOUTPUT
static void getextramonitorpos(struct AmigaMonitor *mon, RECT *r)
{
+ TCHAR buf[100];
RECT r1, r2;
+ int x, y;
+ bool got = true;
+ _stprintf(buf, _T("MainPosX_%d"), mon->monitor_id);
+ if (!regqueryint(NULL, buf, &x)) {
+ got = false;
+ }
+ _stprintf(buf, _T("MainPosY_%d"), mon->monitor_id);
+ if (!regqueryint(NULL, buf, &y)) {
+ got = false;
+ }
+ if (got) {
+ POINT pt;
+ pt.x = x;
+ pt.y = y;
+ if (!MonitorFromPoint(pt, MONITOR_DEFAULTTONULL)) {
+ got = false;
+ }
+ }
// find rightmost window edge
int monid = MAX_AMIGAMONITORS - 1;
int rightmon = -1;
rightmon = monid;
}
}
- if (rightmon < 0)
+ if (rightmon < 0 && !got)
return;
hwnd = AMonitors[rightmon].hMainWnd;
GetWindowRect(hwnd, &r1);
int width = r->right - r->left;
int height = r->bottom - r->top;
- r->left = r1.right - ((r2.left - r1.left) + (r1.right - r2.right));
- r->top = r1.top;
+ if (got) {
+ r->left = x;
+ r->top = y;
+ } else {
+ r->left = r1.right - ((r2.left - r1.left) + (r1.right - r2.right));
+ r->top = r1.top;
+ }
r->bottom = r->top + height;
r->right = r->left + width;
}