From: Toni Wilen Date: Thu, 29 May 2014 16:43:14 +0000 (+0300) Subject: 2810b3 X-Git-Tag: 2810~6 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=a4ef0905876623d96628070d3036f8525c200224;p=francis%2Fwinuae.git 2810b3 --- diff --git a/custom.cpp b/custom.cpp index 318e37ba..f1e1e3e3 100644 --- a/custom.cpp +++ b/custom.cpp @@ -255,7 +255,7 @@ static int sprite_sprctlmask; int sprite_buffer_res; #ifdef CPUEMU_13 -uae_u8 cycle_line[256]; +uae_u8 cycle_line[256 + 1]; #endif static bool bpl1dat_written, bpl1dat_written_at_least_once; @@ -268,8 +268,6 @@ static uaecptr dbplptl[8], dbplpth[8]; static int dbplptl_on[8], dbplpth_on[8], dbplptl_on2, dbplpth_on2; static int bitplane_line_crossing; -/*static int blitcount[256]; blitter debug */ - static struct color_entry current_colors; unsigned int bplcon0; static unsigned int bplcon1, bplcon2, bplcon3, bplcon4; diff --git a/drawing.cpp b/drawing.cpp index 5263a41f..c43fe5a0 100644 --- a/drawing.cpp +++ b/drawing.cpp @@ -2197,7 +2197,7 @@ static void pfield_expand_dp_bplcon (void) bplplanecnt = dp_for_drawing->nr_planes; bplham = dp_for_drawing->ham_seen; bplehb = dp_for_drawing->ehb_seen; - if ((currprefs.chipset_mask & CSMASK_AGA) && (dp_for_drawing->bplcon2 & 0x0200)) + if ((currprefs.chipset_mask & CSMASK_ECS_DENISE) && (dp_for_drawing->bplcon2 & 0x0200)) bplehb = 0; issprites = dip_for_drawing->nr_sprites > 0; #ifdef ECS_DENISE diff --git a/events.cpp b/events.cpp index 4a227a1d..a9ab9491 100644 --- a/events.cpp +++ b/events.cpp @@ -179,7 +179,7 @@ void event2_newevent_xx (int no, evt t, uae_u32 data, evfunc2 func) int current_hpos (void) { int hp = current_hpos_safe (); - if (hp < 0 || hp >= 256) { + if (hp < 0 || hp > 256) { gui_message(_T("hpos = %d!?\n"), hp); hp = 0; } diff --git a/inputdevice.cpp b/inputdevice.cpp index c1677f14..443ca31e 100644 --- a/inputdevice.cpp +++ b/inputdevice.cpp @@ -1655,7 +1655,13 @@ static int mouseedge (void) goto end; } ib = get_intuitionbase (); - if (!ib || get_word (ib + 20) < 31) // version < 31 + if (!ib) + return 0; + if (get_word (ib + 20) < 31) // version < 31 + return 0; + if (get_long (ib + 34 + 0) == 0) // ViewPort == NULL + return 0; + if (get_long (ib + 60) == 0) // FirstScreen == NULL return 0; x = get_word (ib + 70); y = get_word (ib + 68); diff --git a/od-win32/fsdb_mywin32.cpp b/od-win32/fsdb_mywin32.cpp index 23339707..b990c9ba 100644 --- a/od-win32/fsdb_mywin32.cpp +++ b/od-win32/fsdb_mywin32.cpp @@ -502,13 +502,9 @@ int dos_errno (void) return ERROR_SEEK_ERROR; default: - { - static int done; - if (!done) - gui_message (_T("Unimplemented error %d\nContact author!"), e); - done = 1; - } - return ERROR_NOT_IMPLEMENTED; + write_log (_T("Unimplemented error %d\n"), e); + /* most common */ + return ERROR_OBJECT_NOT_AROUND; } } @@ -777,7 +773,7 @@ void my_canonicalize_path(const TCHAR *path, TCHAR *out, int size) out[size - 1] = 0; return; } - PathCanonicalize(out, tmp); + GetFullPathName(tmp, size, out, NULL); } int my_issamevolume(const TCHAR *path1, const TCHAR *path2, TCHAR *path) @@ -1003,4 +999,4 @@ bool my_resolvesoftlink(TCHAR *linkfile, int size) my_canonicalize_path (tmp, linkfile, size); } return false; -} \ No newline at end of file +} diff --git a/od-win32/rp.cpp b/od-win32/rp.cpp index 9ce8fc21..7c55bc71 100644 --- a/od-win32/rp.cpp +++ b/od-win32/rp.cpp @@ -919,9 +919,9 @@ static void set_screenmode (struct RPScreenMode *sm, struct uae_prefs *p) p->gfx_size_fs.width, p->gfx_size_fs.height, p->rtg_horiz_zoom_mult, p->rtg_vert_zoom_mult); } else { - write_log (_T("WW=%d WH=%d FW=%d FH=%d HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"), - p->gfx_size_win.width, p->gfx_size_win.height, - p->gfx_size_fs.width, p->gfx_size_fs.height, + write_log (_T("WW=%d (%d) WH=%d (%d) FW=%d (%d) FH=%d (%d) HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"), + p->gfx_size_win.width, currprefs.gfx_size_win.width, p->gfx_size_win.height, currprefs.gfx_size.height, + p->gfx_size_fs.width, currprefs.gfx_size_fs.width, p->gfx_size_fs.height, currprefs.gfx_size_fs.height, p->gf[0].gfx_filter_horiz_zoom_mult, p->gf[0].gfx_filter_vert_zoom_mult, p->gfx_xcenter_pos, p->gfx_ycenter_pos, p->gfx_xcenter_size, p->gfx_ycenter_size, @@ -932,6 +932,15 @@ static void set_screenmode (struct RPScreenMode *sm, struct uae_prefs *p) updatewinfsmode (p); hwndset = 0; set_config_changed (); + + write_log (_T("AFTER WW=%d (%d) WH=%d (%d) FW=%d (%d) FH=%d (%d) HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"), + p->gfx_size_win.width, currprefs.gfx_size_win.width, p->gfx_size_win.height, currprefs.gfx_size.height, + p->gfx_size_fs.width, currprefs.gfx_size_fs.width, p->gfx_size_fs.height, currprefs.gfx_size_fs.height, + p->gf[0].gfx_filter_horiz_zoom_mult, p->gf[0].gfx_filter_vert_zoom_mult, + p->gfx_xcenter_pos, p->gfx_ycenter_pos, + p->gfx_xcenter_size, p->gfx_ycenter_size, + p->gf[0].gfx_filter_autoscale, p->gf[0].gfx_filter_aspect, p->gf[0].gfx_filter_keep_aspect); + write_log (_T("AFTER W=%d (%d) H=%d (%d)\n"), p->gfx_size.width, currprefs.gfx_size.width, p->gfx_size.height, currprefs.gfx_size.height); } static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM lParam, diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index 1d89fe73..0e3be09d 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -2595,12 +2595,19 @@ void fullpath (TCHAR *path, int size) int ret = GetFullPathName (path, sizeof tmp2 / sizeof (TCHAR), tmp2, NULL); if (ret == 0 || ret >= sizeof tmp2 / sizeof (TCHAR)) return; - if (_tcsnicmp (tmp1, tmp2, _tcslen (tmp1)) == 0) { // tmp2 is inside tmp1 + if (_tcslen(tmp1) > 2 && _tcsnicmp(tmp1, tmp2, 3) == 0 && tmp1[1] == ':' && tmp1[2] == '\\') { + // same drive letter + if (PathRelativePathTo(path, tmp1, FILE_ATTRIBUTE_DIRECTORY, tmp2, tmp2[_tcslen(tmp2) - 1] == '\\' ? FILE_ATTRIBUTE_DIRECTORY : 0)) + goto done; + } + if (_tcsnicmp (tmp1, tmp2, _tcslen (tmp1)) == 0) { + // tmp2 is inside tmp1 _tcscpy (path, _T(".\\")); _tcscat (path, tmp2 + _tcslen (tmp1)); } else { _tcscpy (path, tmp2); } +done:; } else { TCHAR tmp[MAX_DPATH]; _tcscpy (tmp, path); diff --git a/od-win32/win32.h b/od-win32/win32.h index 749e33d3..4cb2e908 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -19,11 +19,11 @@ #define LANG_DLL 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("2") +#define WINUAEBETA _T("3") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2014, 5, 21) +#define WINUAEDATE MAKEBD(2014, 5, 29) #define WINUAEEXTRA _T("") //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32_scaler.cpp b/od-win32/win32_scaler.cpp index fa1f89e8..478d90c7 100644 --- a/od-win32/win32_scaler.cpp +++ b/od-win32/win32_scaler.cpp @@ -223,6 +223,7 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height } int scalemode = currprefs.gf[picasso_on].gfx_filter_autoscale; + int oscalemode = changed_prefs.gf[picasso_on].gfx_filter_autoscale; if (!specialmode && scalemode == AUTOSCALE_STATIC_AUTO) { if (currprefs.gfx_apmode[0].gfx_fullscreen) { @@ -463,13 +464,15 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height ww = currprefs.gfx_xcenter_size; if (currprefs.gfx_ycenter_size >= 0) hh = currprefs.gfx_ycenter_size; - int oldwinw = currprefs.gfx_size_win.width; - int oldwinh = currprefs.gfx_size_win.height; - changed_prefs.gfx_size_win.width = ww; - changed_prefs.gfx_size_win.height = hh; - fixup_prefs_dimensions (&changed_prefs); - if (oldwinw != changed_prefs.gfx_size_win.width || oldwinh != changed_prefs.gfx_size_win.height) - set_config_changed (); + if (scalemode == oscalemode) { + int oldwinw = currprefs.gfx_size_win.width; + int oldwinh = currprefs.gfx_size_win.height; + changed_prefs.gfx_size_win.width = ww; + changed_prefs.gfx_size_win.height = hh; + fixup_prefs_dimensions (&changed_prefs); + if (oldwinw != changed_prefs.gfx_size_win.width || oldwinh != changed_prefs.gfx_size_win.height) + set_config_changed (); + } OffsetRect (zr, -(changed_prefs.gfx_size_win.width - ww + 1) / 2, -(changed_prefs.gfx_size_win.height - hh + 1) / 2); filteroffsetx = -zr->left / scale; filteroffsety = -zr->top / scale; diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 740c3776..53925317 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -18,6 +18,20 @@ Things that may happen in 2015: - restore only single input target to default. +Beta 3: + +- Do not show "hpos = 256!?" error dialog if something writes very bad values to programmed display + mode registers. +- "Magic mouse" now stays disabled unless there is at least one open Intuition Screen. +- If relative path mode, support also relative paths that point outside of winuae root directory. +- BPLCON2 KILLEHB bit still required AGA instead of ECS Denise. This was supposed to be fixed in 1.4.5. + (But no one cares, pre-AGA it was only meant for genlock stuff) +- Removed "Unimplemented error" dialog if directory filesystem returns unhandled/unknown win32 disk error + codes, adds log message, returns ERROR_OBJECT_NOT_AROUND. (Most common causes are network filesystem problems, + file/directory errors due security problems etc, no new missing errors reported for long time) +- On the fly (not using GUI) switching from Automatic resize filter to another filter mode may have incorrectly + changed window size in some situations. + Beta 2: - Quickstart GUI disk eject button was unreliable.