From ddbdb9185d739b8e55fc10ddd3e697fcd97fa7dd Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 22 Sep 2018 20:40:10 +0300 Subject: [PATCH] 4100b6 --- blkdev_cdimage.cpp | 4 ++-- od-win32/picasso96_win.cpp | 11 ++++++----- od-win32/picasso96_win.h | 3 +++ od-win32/resources/winuae.rc | 28 ++++++++++++++-------------- od-win32/rp.cpp | 2 +- od-win32/win32.h | 4 ++-- od-win32/win32gfx.cpp | 20 +++++++++++++++----- od-win32/win32gui.cpp | 34 ++++++++++++++++++---------------- od-win32/winuaechangelog.txt | 13 +++++++++++++ 9 files changed, 74 insertions(+), 45 deletions(-) diff --git a/blkdev_cdimage.cpp b/blkdev_cdimage.cpp index 1c212315..efde70a5 100644 --- a/blkdev_cdimage.cpp +++ b/blkdev_cdimage.cpp @@ -2253,7 +2253,7 @@ static int open_device (int unitnum, const TCHAR *ident, int flags) } ret = 1; } - blkdev_cd_change (unitnum, cdu->imgname_in); + blkdev_cd_change (unitnum, cdu->imgname_out); return ret; } @@ -2275,7 +2275,7 @@ static void close_device (int unitnum) unload_image (cdu); uae_sem_destroy (&cdu->sub_sem); } - blkdev_cd_change (unitnum, cdu->imgname_in); + blkdev_cd_change (unitnum, cdu->imgname_out); } static void close_bus (void) diff --git a/od-win32/picasso96_win.cpp b/od-win32/picasso96_win.cpp index b18ad2d5..ce5a9eaa 100644 --- a/od-win32/picasso96_win.cpp +++ b/od-win32/picasso96_win.cpp @@ -203,15 +203,15 @@ extern addrbank gfxmem_bank; extern addrbank *gfxmem_banks[MAX_RTG_BOARDS]; extern int rtg_index; -static void lockrtg(void) +void lockrtg(void) { - if (currprefs.rtg_multithread) + if (currprefs.rtg_multithread && render_pipe) EnterCriticalSection(&render_cs); } -static void unlockrtg(void) +void unlockrtg(void) { - if (currprefs.rtg_multithread) + if (currprefs.rtg_multithread && render_pipe) LeaveCriticalSection(&render_cs); } @@ -4456,6 +4456,8 @@ uae_u8 *getrtgbuffer(int monid, int *widthp, int *heightp, int *pitch, int *dept width = state->VirtualWidth; height = state->VirtualHeight; pixbytes = state->BytesPerPixel == 1 && palette ? 1 : 4; + if (!width || !height || !pixbytes) + return NULL; dst = xmalloc (uae_u8, width * height * pixbytes); if (!dst) @@ -4490,7 +4492,6 @@ uae_u8 *getrtgbuffer(int monid, int *widthp, int *heightp, int *pitch, int *dept *pitch = width * pixbytes; *depth = pixbytes * 8; - return dst; } void freertgbuffer(int monid, uae_u8 *dst) diff --git a/od-win32/picasso96_win.h b/od-win32/picasso96_win.h index 4342ccd6..aa67e257 100644 --- a/od-win32/picasso96_win.h +++ b/od-win32/picasso96_win.h @@ -592,6 +592,9 @@ extern uae_u8 *gfx_lock_picasso(int monid, bool, bool); extern void gfx_unlock_picasso(int monid, bool); extern int createwindowscursor(int monid, uaecptr src, int w, int h, int hiressprite, int doubledsprite, int chipset); +void lockrtg(void); +void unlockrtg(void); + void fb_copyrow(int monid, uae_u8 *src, uae_u8 *dst, int x, int y, int width, int srcpixbytes, int dy); extern int p96refresh_active; diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index b515827f..88174af0 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -467,7 +467,14 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN CONTROL "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,1,2,393,236,WS_EX_CLIENTEDGE + RTEXT "Search:",IDC_STATIC,7,245,44,8,SS_CENTERIMAGE + EDITTEXT IDC_CONFIGSEARCH,55,243,90,13,ES_AUTOHSCROLL + PUSHBUTTON "X",IDC_CONFIGSEARCHCLEAR,149,243,15,14 + RTEXT "Filter:",IDC_STATIC,172,245,39,8,SS_CENTERIMAGE + COMBOBOX IDC_CONFIGFOLDER,216,243,177,150,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP RTEXT "Name:",IDC_STATIC,4,265,47,8,SS_CENTERIMAGE + COMBOBOX IDC_EDITNAME,55,264,175,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_EDITPATH,236,263,49,15,ES_AUTOHSCROLL | WS_DISABLED RTEXT "Description:",IDC_STATIC,1,286,50,8,SS_CENTERIMAGE EDITTEXT IDC_EDITDESCRIPTION,55,284,230,13,ES_AUTOHSCROLL GROUPBOX "Additional Information",IDC_STATIC,289,260,105,38,BS_LEFT @@ -478,13 +485,6 @@ BEGIN PUSHBUTTON "Load From...",IDC_LOAD,162,301,60,15 PUSHBUTTON "Save As...",IDC_SAVE,226,301,60,15 PUSHBUTTON "Delete",IDC_DELETE,335,301,60,15 - COMBOBOX IDC_CONFIGFOLDER,216,243,177,150,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_CONFIGSEARCH,55,243,90,13,ES_AUTOHSCROLL - RTEXT "Search:",IDC_STATIC,7,245,44,8,SS_CENTERIMAGE - RTEXT "Filter:",IDC_STATIC,172,245,39,8,SS_CENTERIMAGE - PUSHBUTTON "X",IDC_CONFIGSEARCHCLEAR,149,243,15,14 - EDITTEXT IDC_EDITPATH,236,263,49,15,ES_AUTOHSCROLL | WS_DISABLED - COMBOBOX IDC_EDITNAME,55,264,175,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP END IDD_IOPORTS DIALOGEX 0, 0, 396, 295 @@ -712,16 +712,16 @@ BEGIN RTEXT "Path:",IDC_STATIC,5,15,36,15,SS_CENTERIMAGE EDITTEXT IDC_PATH_NAME,46,15,324,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_SELECTOR,376,15,10,15 - PUSHBUTTON "OK",IDOK,146,102,48,15 - PUSHBUTTON "Cancel",IDCANCEL,201,102,48,15 RTEXT "Link:",IDC_STATIC,6,37,33,8,SS_CENTERIMAGE COMBOBOX IDC_CONFIGLINK,46,35,250,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,305,37,58,12 - CONTROL "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,305,56,51,12 RTEXT "Category:",IDC_STATIC,6,58,33,8,SS_CENTERIMAGE + EDITTEXT IDC_CONFIGCATEGORY,46,54,249,15,ES_AUTOHSCROLL RTEXT "Tags:",IDC_STATIC,6,76,33,8,SS_CENTERIMAGE - EDITTEXT IDC_CONFIGCATEGORY,46,54,324,15,ES_AUTOHSCROLL - EDITTEXT IDC_CONFIGTAGS,46,74,324,15,ES_AUTOHSCROLL + EDITTEXT IDC_CONFIGTAGS,46,74,249,15,ES_AUTOHSCROLL + CONTROL "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,305,37,58,12 + CONTROL "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,305,56,51,12 + PUSHBUTTON "OK",IDOK,146,102,48,15 + PUSHBUTTON "Cancel",IDCANCEL,201,102,48,15 END IDD_CHIPSET DIALOGEX 0, 0, 396, 287 @@ -2159,7 +2159,7 @@ BEGIN "PPC native OS booted with incompatible UAE boot ROM enabled.\nSelect ROM panel ""New UAE (128k, ROM, Indirect)"" option\nor disable all UAE expansions.\n" IDS_AUTOSCALE_OVERSCAN_BLANK "Overscan blanking" IDS_NUMSG_NOMEMORY "Out of memory or too much Z3 autoconfig space configured.\nIf 64-bit, make sure RTG board is first in board list." - IDS_EXPANSION_CATEGORY "Built-in expansions\nSCSI controllers\nIDE controllers\nSASI controllers\nCustom controllers\nPCI bridgeboards\nx86 bridgeboards\nGraphics boards\nSound cards\nNetwork adapters\nDisk controllers\nx86 bridgeboard expansions" + IDS_EXPANSION_CATEGORY "Built-in expansions\nSCSI controllers\nIDE controllers\nSASI controllers\nCustom controllers\nPCI bridgeboards\nx86 Bridgeboards\nGraphics boards\nSound cards\nNetwork adapters\nDisk controllers\nx86 bridgeboard expansions" IDS_WINUAETITLE_PAUSED "[Paused]" IDS_MOUSE_UNTRAP_MODE "None (Alt-Tab)\nMiddle button\nMagic mouse\nBoth\n" IDS_TABLET_MODE "-\nTablet emulation\n" diff --git a/od-win32/rp.cpp b/od-win32/rp.cpp index ca432599..bca126e5 100644 --- a/od-win32/rp.cpp +++ b/od-win32/rp.cpp @@ -1757,7 +1757,7 @@ void rp_harddrive_image_change (int num, bool readonly, const TCHAR *name) } void rp_cd_image_change (int num, const TCHAR *name) { - rp_device_change (RP_DEVICECATEGORY_CD, num, 0, 0, name); + rp_device_change (RP_DEVICECATEGORY_CD, num, 0, true, name); } void rp_floppy_device_enable (int num, bool enabled) diff --git a/od-win32/win32.h b/od-win32/win32.h index 4fc242fb..2e3b1bc5 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #define LANG_DLL_FULL_VERSION_MATCH 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("5") +#define WINUAEBETA _T("6") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2018, 9, 16) +#define WINUAEDATE MAKEBD(2018, 9, 22) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32gfx.cpp b/od-win32/win32gfx.cpp index 8941b9b4..7c54a1c9 100644 --- a/od-win32/win32gfx.cpp +++ b/od-win32/win32gfx.cpp @@ -4201,15 +4201,13 @@ bool target_graphics_buffer_update(int monid) return true; } -void updatedisplayarea(int monid) +static void updatedisplayarea2(int monid) { struct AmigaMonitor *mon = &AMonitors[monid]; struct amigadisplay *ad = &adisplays[monid]; if (!mon->screen_is_initialized) return; - if (mon->screen_is_picasso) - return; - if (dx_islost ()) + if (dx_islost()) return; #if defined (GFXFILTER) if (mon->currentmode.flags & DM_D3D) { @@ -4225,8 +4223,20 @@ void updatedisplayarea(int monid) S2X_refresh(monid); } #endif - DirectDraw_Flip (0); + DirectDraw_Flip(0); + } +} + +void updatedisplayarea(int monid) +{ + if (monid >= 0) { + updatedisplayarea2(monid); + } else { + for (int i = 0; i < MAX_AMIGAMONITORS; i++) { + updatedisplayarea2(i); } + } + } void updatewinfsmode(int monid, struct uae_prefs *p) diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 95999af2..b97ddffa 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -4651,8 +4651,6 @@ void InitializeListView (HWND hDlg) DWORD extraflags = 0; int listpadding; - SetWindowRedraw(hDlg, FALSE); - if (cachedlist) { if (lv_old_type >= 0) { lv_oldidx[lv_old_type] = ListView_GetTopIndex (cachedlist); @@ -4741,6 +4739,8 @@ void InitializeListView (HWND hDlg) } + SetWindowRedraw(list, FALSE); + scalaresource_listview_font_info(&listpadding); listpadding *= 2; int flags = LVS_EX_DOUBLEBUFFER | extraflags; @@ -5202,8 +5202,6 @@ void InitializeListView (HWND hDlg) } #endif } - SetWindowRedraw(hDlg, TRUE); - RedrawWindow(hDlg, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); if (result != -1) { if (GetWindowRect (list, &rect)) { @@ -5235,6 +5233,8 @@ void InitializeListView (HWND hDlg) } lv_old_type = lv_type; + SetWindowRedraw(list, TRUE); + RedrawWindow(list, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); } static int listview_find_selected (HWND list) @@ -7504,7 +7504,7 @@ static void update_da (HWND hDlg) set_da (hDlg); init_colors(0); init_custom(); - updatedisplayarea(0); + updatedisplayarea(-1); } static void handle_da (HWND hDlg) @@ -9715,6 +9715,8 @@ static void init_expansion2(HWND hDlg, bool init) continue; if (scsiromselectedcatnum == 0 && (expansionroms[i].deviceflags & (EXPANSIONTYPE_SASI | EXPANSIONTYPE_CUSTOM))) continue; + if ((expansionroms[i].deviceflags & EXPANSIONTYPE_X86_EXPANSION) && scsiromselectedmask[scsiromselectedcatnum] != EXPANSIONTYPE_X86_EXPANSION) + continue; int cnt = 0; for (int j = 0; j < MAX_DUPLICATE_EXPANSION_BOARDS; j++) { if (is_board_enabled(&workprefs, expansionroms[i].romtype, j)) { @@ -13390,7 +13392,7 @@ static void addhdcontroller(HWND hDlg, const struct expansionromtype *erc, int * { TCHAR name[MAX_DPATH]; name[0] = 0; - if (_tcsicmp(erc->friendlymanufacturer, erc->friendlyname)) { + if (erc->friendlymanufacturer && _tcsicmp(erc->friendlymanufacturer, erc->friendlyname)) { _tcscat(name, erc->friendlymanufacturer); _tcscat(name, _T(" ")); } @@ -19143,7 +19145,7 @@ static void filter_handle (HWND hDlg) } } enable_for_hw3ddlg (hDlg); - updatedisplayarea(0); + updatedisplayarea(-1); } static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) @@ -19251,7 +19253,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM currprefs.gf[filter_nativertg].gfx_filter_horiz_zoom_mult = workprefs.gf[filter_nativertg].gfx_filter_horiz_zoom_mult = 1.0; currprefs.gf[filter_nativertg].gfx_filter_vert_zoom_mult = workprefs.gf[filter_nativertg].gfx_filter_vert_zoom_mult = 1.0; values_to_hw3ddlg (hDlg, false); - updatedisplayarea(0); + updatedisplayarea(-1); break; case IDC_FILTERPRESETLOAD: case IDC_FILTERPRESETSAVE: @@ -19268,14 +19270,14 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM currprefs.gf[filter_nativertg].gfx_filter_keep_aspect = workprefs.gf[filter_nativertg].gfx_filter_keep_aspect = 0; enable_for_hw3ddlg (hDlg); values_to_hw3ddlg (hDlg, false); - updatedisplayarea(0); + updatedisplayarea(-1); } case IDC_FILTERKEEPAUTOSCALEASPECT: { workprefs.gf[filter_nativertg].gfx_filter_keep_autoscale_aspect = currprefs.gf[filter_nativertg].gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 1 : 0; enable_for_hw3ddlg (hDlg); values_to_hw3ddlg (hDlg, false); - updatedisplayarea(0); + updatedisplayarea(-1); } break; default: @@ -19333,7 +19335,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM item = SendDlgItemMessage (hDlg, IDC_FILTERSLR, CB_GETCURSEL, 0, 0L); if (item != CB_ERR) { currprefs.gf[filter_nativertg].gfx_filter_scanlineratio = workprefs.gf[filter_nativertg].gfx_filter_scanlineratio = scanlineindexes[item]; - updatedisplayarea(0); + updatedisplayarea(-1); } break; case IDC_FILTEROVERLAYTYPE: @@ -19351,11 +19353,11 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM break; case IDC_FILTERHZMULT: currprefs.gf[filter_nativertg].gfx_filter_horiz_zoom_mult = workprefs.gf[filter_nativertg].gfx_filter_horiz_zoom_mult = getfiltermult (hDlg, IDC_FILTERHZMULT); - updatedisplayarea(0); + updatedisplayarea(-1); break; case IDC_FILTERVZMULT: currprefs.gf[filter_nativertg].gfx_filter_vert_zoom_mult = workprefs.gf[filter_nativertg].gfx_filter_vert_zoom_mult = getfiltermult (hDlg, IDC_FILTERVZMULT); - updatedisplayarea(0); + updatedisplayarea(-1); break; case IDC_FILTERASPECT: { @@ -19370,7 +19372,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM v2 = getaspectratio (v - 2); } currprefs.gf[filter_nativertg].gfx_filter_aspect = workprefs.gf[filter_nativertg].gfx_filter_aspect = v2; - updatedisplayarea(0); + updatedisplayarea(-1); } break; case IDC_FILTERASPECT2: @@ -19378,7 +19380,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM int v = SendDlgItemMessage (hDlg, IDC_FILTERASPECT2, CB_GETCURSEL, 0, 0L); if (v != CB_ERR) currprefs.gf[filter_nativertg].gfx_filter_keep_aspect = workprefs.gf[filter_nativertg].gfx_filter_keep_aspect = v; - updatedisplayarea(0); + updatedisplayarea(-1); } break; @@ -19459,7 +19461,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM init_colors(0); notice_new_xcolors (); } - updatedisplayarea(0); + updatedisplayarea(-1); recursive--; break; } diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index f1d4df37..a4521a00 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,5 +1,18 @@ +Beta 6: + +- Video recording from hardware emulated graphics boards recorded only black screen. +- Screenshot from hardware emulated graphics boards always captured visible output even if capture before filtering was ticked. +- Filter panel (D3D) scanlines work now properly in multimonitor mode. (Previously native/RTG selection was ignored) +- Taking screenshot/recording when in multithreaded RTG mode was not thread safe. +- x86 bridgeboard category move broke SCSI and IDE x86 expansions. Sound Blaster and NIC was not moved. +- x86 bridgeboard virtual serial mouse connected serial port was not reset at reboot. +- A2386SX bridgeboard chipset EMS banking emulation was not complete, chipset native EMS driver complained about invalid hardware. +- Creating state file when disk access was active and disk image included timing information (for example ipf) caused buffer overflow. +- Autoload checkbox was hidden under string field in Advanced information panel. +- Added untested MSBSYNC disk synchronization mode support. + Beta 5: - Search clear ("X" button) didn't store new empty search filter to registry/ini. -- 2.47.3