mirror of
https://github.com/libretro/NP2kai.git
synced 2024-10-07 06:43:29 +00:00
Merge NP21/W rev.59
This commit is contained in:
parent
b3369a3290
commit
fbb9a30934
@ -1270,7 +1270,9 @@ void atapi_deinitialize(void) {
|
||||
if(atapi_thread_initialized){
|
||||
atapi_thread_initialized = 0;
|
||||
while(((int)ResumeThread(atapi_thread)) > 0);
|
||||
WaitForSingleObject(atapi_thread, INFINITE);
|
||||
if(WaitForSingleObject(atapi_thread, 5000) == WAIT_TIMEOUT){
|
||||
TerminateThread(atapi_thread, 0);
|
||||
}
|
||||
CloseHandle(atapi_thread);
|
||||
atapi_thread = NULL;
|
||||
}
|
||||
|
@ -1803,8 +1803,12 @@ void ideio_deinitialize(void) {
|
||||
ideio_thread_initialized = 0;
|
||||
while(((int)ResumeThread(ideio_threadR))>0);
|
||||
while(((int)ResumeThread(ideio_threadW))>0);
|
||||
WaitForSingleObject(ideio_threadR, INFINITE);
|
||||
WaitForSingleObject(ideio_threadW, INFINITE);
|
||||
if(WaitForSingleObject(ideio_threadR, 5000) == WAIT_TIMEOUT){
|
||||
TerminateThread(ideio_threadR, 0);
|
||||
}
|
||||
if(WaitForSingleObject(ideio_threadW, 1000) == WAIT_TIMEOUT){
|
||||
TerminateThread(ideio_threadW, 0);
|
||||
}
|
||||
CloseHandle(ideio_threadR);
|
||||
CloseHandle(ideio_threadW);
|
||||
ideio_threadR = NULL;
|
||||
|
@ -306,6 +306,7 @@ BRESULT sxsi_devopen(REG8 drv, const OEMCHAR *fname) {
|
||||
}
|
||||
if ((fname == NULL) || (fname[0] == '\0')) {
|
||||
int num = drv & 0x0f;
|
||||
sxsi->close(sxsi);
|
||||
ideio_notify(sxsi->drv, 0);
|
||||
file_cpyname(sxsi->fname, _T("\0\0\0\0"), 1);
|
||||
sxsi->flag = 0;
|
||||
@ -316,6 +317,7 @@ BRESULT sxsi_devopen(REG8 drv, const OEMCHAR *fname) {
|
||||
else {
|
||||
if((sxsi->flag & SXSIFLAG_READY) && (_tcsnicmp(sxsi->fname, OEMTEXT("\\\\.\\"), 4)!=0 || _tcsicmp(sxsi->fname, np2cfg.idecd[drv & 0x0f])==0) ){
|
||||
// いったん取り出す
|
||||
sxsi->close(sxsi);
|
||||
ideio_notify(sxsi->drv, 0);
|
||||
sxsi->flag = 0;
|
||||
cdchange_drv = drv;
|
||||
|
@ -123,8 +123,9 @@ static int doWriteTap(HANDLE hTap, const UINT8 *pSendBuf, UINT32 len)
|
||||
if (!WriteFile(hTap, pSendBuf, len, &dwWriteLen, &np2net_write_ovl)) {
|
||||
DWORD err = GetLastError();
|
||||
if (err == ERROR_IO_PENDING) {
|
||||
WaitForSingleObject(np2net_write_hEvent, INFINITE); // 完了待ち
|
||||
GetOverlappedResult(hTap, &np2net_write_ovl, &dwWriteLen, FALSE);
|
||||
if(WaitForSingleObject(np2net_write_hEvent, 3000)!=WAIT_TIMEOUT){ // 完了待ち
|
||||
GetOverlappedResult(hTap, &np2net_write_ovl, &dwWriteLen, FALSE);
|
||||
}
|
||||
} else {
|
||||
TRACEOUT(("LGY-98: WriteFile err=0x%08X\n", err));
|
||||
return -1;
|
||||
@ -250,13 +251,14 @@ static unsigned int __stdcall np2net_ThreadFuncR(LPVOID vdParam) {
|
||||
DWORD err = GetLastError();
|
||||
if (err == ERROR_IO_PENDING) {
|
||||
// 読み取り待ち
|
||||
WaitForSingleObject(hEvent, INFINITE); // 受信完了待ち
|
||||
GetOverlappedResult(np2net_hTap, &ovl, &dwLen, FALSE);
|
||||
if(dwLen>0){
|
||||
//TRACEOUT(("LGY-98: recieve %u bytes\n", dwLen));
|
||||
np2net.recieve_packet((UINT8*)np2net_Buf, dwLen); // 受信できたので通知する
|
||||
np2net_highspeeddatacount += dwLen;
|
||||
}
|
||||
if(WaitForSingleObject(hEvent, 3000)!=WAIT_TIMEOUT){ // 受信完了待ち
|
||||
GetOverlappedResult(np2net_hTap, &ovl, &dwLen, FALSE);
|
||||
if(dwLen>0){
|
||||
//TRACEOUT(("LGY-98: recieve %u bytes¥n", dwLen));
|
||||
np2net.recieve_packet((UINT8*)np2net_Buf, dwLen); // 受信できたので通知する
|
||||
np2net_highspeeddatacount += dwLen;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 読み取りエラー
|
||||
printf("TAP-Win32: ReadFile err=0x%08X\n", err);
|
||||
@ -342,11 +344,18 @@ static void np2net_closeTAP(){
|
||||
if (np2net_hTap != NULL) {
|
||||
if(np2net_hThreadR){
|
||||
np2net_hThreadexit = 1;
|
||||
WaitForSingleObject(np2net_hThreadR, INFINITE);
|
||||
WaitForSingleObject(np2net_hThreadW, INFINITE);
|
||||
if(WaitForSingleObject(np2net_hThreadR, 5000) == WAIT_TIMEOUT){
|
||||
TerminateThread(np2net_hThreadR, 0);
|
||||
}
|
||||
if(WaitForSingleObject(np2net_hThreadW, 1000) == WAIT_TIMEOUT){
|
||||
TerminateThread(np2net_hThreadW, 0);
|
||||
}
|
||||
np2net_membuf_readpos = np2net_membuf_writepos;
|
||||
np2net_hThreadexit = 0;
|
||||
CloseHandle(np2net_hThreadR);
|
||||
CloseHandle(np2net_hThreadW);
|
||||
np2net_hThreadR = NULL;
|
||||
np2net_hThreadW = NULL;
|
||||
}
|
||||
CloseHandle(np2net_hTap);
|
||||
TRACEOUT(("LGY-98: TAP is closed"));
|
||||
|
13
pccore.h
13
pccore.h
@ -348,13 +348,22 @@ void pccore_exec(BOOL draw);
|
||||
|
||||
void pccore_postevent(UINT32 event);
|
||||
|
||||
#if !defined(__LIBRETRO__) && !defined(NP2_SDL2) && !defined(NP2_X11)
|
||||
#ifdef SUPPORT_ASYNC_CPU
|
||||
#if defined(__LIBRETRO__) || defined(NP2_SDL2) || defined(NP2_X11)
|
||||
#if !defined(__MINGW32__) && !defined(_MSC_VER)
|
||||
typedef union {
|
||||
struct {
|
||||
UINT32 LowPart;
|
||||
SINT32 HighPart;
|
||||
} u;
|
||||
SINT64 QuadPart;
|
||||
} LARGE_INTEGER;
|
||||
#endif
|
||||
#endif
|
||||
extern LARGE_INTEGER asynccpu_lastclock;
|
||||
extern LARGE_INTEGER asynccpu_clockpersec;
|
||||
extern LARGE_INTEGER asynccpu_clockcount;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
16
wab/wab.c
16
wab/wab.c
@ -500,7 +500,7 @@ void np2wab_drawframe()
|
||||
scrnmng_bltwab();
|
||||
}
|
||||
ga_screenupdated = 0;
|
||||
ResumeThread(ga_hThread);
|
||||
if(ga_hThread) ResumeThread(ga_hThread);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -612,10 +612,11 @@ void np2wab_reset(const NP2CFG *pConfig)
|
||||
// マルチスレッドモードなら先にスレッド処理を終了させる
|
||||
if(ga_threadmode && ga_hThread){
|
||||
ga_exitThread = 1;
|
||||
ResumeThread(ga_hThread);
|
||||
while(((int)ResumeThread(ga_hThread))>0);
|
||||
while(WaitForSingleObject(ga_hThread, 200)==WAIT_TIMEOUT){
|
||||
ResumeThread(ga_hThread);
|
||||
}
|
||||
CloseHandle(ga_hThread);
|
||||
ga_hThread = NULL;
|
||||
ga_exitThread = 0;
|
||||
}
|
||||
@ -654,10 +655,11 @@ void np2wab_bind(void)
|
||||
// マルチスレッドモードなら先にスレッド処理を終了させる
|
||||
if(ga_threadmode && ga_hThread){
|
||||
ga_exitThread = 1;
|
||||
ResumeThread(ga_hThread);
|
||||
while(((int)ResumeThread(ga_hThread))>0);
|
||||
while(WaitForSingleObject(ga_hThread, 200)==WAIT_TIMEOUT){
|
||||
ResumeThread(ga_hThread);
|
||||
}
|
||||
CloseHandle(ga_hThread);
|
||||
ga_hThread = NULL;
|
||||
ga_exitThread = 0;
|
||||
}
|
||||
@ -703,10 +705,14 @@ void np2wab_shutdown()
|
||||
#else
|
||||
// マルチスレッドモードなら先にスレッド処理を終了させる
|
||||
ga_exitThread = 1;
|
||||
ResumeThread(ga_hThread);
|
||||
while(WaitForSingleObject(ga_hThread, 500)==WAIT_TIMEOUT){
|
||||
while(((int)ResumeThread(ga_hThread))>0);
|
||||
if(WaitForSingleObject(ga_hThread, 1000)==WAIT_TIMEOUT){
|
||||
ResumeThread(ga_hThread);
|
||||
}
|
||||
if(WaitForSingleObject(ga_hThread, 4000)==WAIT_TIMEOUT){
|
||||
TerminateThread(ga_hThread, 0); // 諦めて強制終了
|
||||
}
|
||||
CloseHandle(ga_hThread);
|
||||
ga_hThread = NULL;
|
||||
|
||||
// いろいろ解放
|
||||
|
@ -1049,6 +1049,7 @@ void dialog_newdisk_ex(HWND hWnd, int mode)
|
||||
{
|
||||
_mt_cancel = 1;
|
||||
WaitForSingleObject(newdisk_ThreadFunc, INFINITE);
|
||||
CloseHandle(newdisk_ThreadFunc);
|
||||
}
|
||||
_mt_cancel = 1;
|
||||
}
|
||||
|
@ -252,7 +252,8 @@ static void stop_hook_systemkey()
|
||||
if(np2_hThreadKeyHook && np2_hThreadKeyHookhWnd){
|
||||
np2_hThreadKeyHookexit = 1;
|
||||
SendMessage(np2_hThreadKeyHookhWnd , WM_CLOSE , 0 , 0);
|
||||
WaitForSingleObject(np2_hThreadKeyHook, INFINITE);
|
||||
WaitForSingleObject(np2_hThreadKeyHook, INFINITE);
|
||||
CloseHandle(np2_hThreadKeyHook);
|
||||
np2_hThreadKeyHook = NULL;
|
||||
np2_hThreadKeyHookexit = 0;
|
||||
}
|
||||
@ -2150,6 +2151,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||
np2wab_setRelayState(np2wab.relay ? 0 : 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef HOOK_SYSKEY
|
||||
else if ((wParam == VK_SNAPSHOT) && (np2oscfg.syskhook)) {
|
||||
// nothing to do
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
winkbd_keydown(wParam, lParam);
|
||||
@ -3040,6 +3046,23 @@ void loadNP2INI(const OEMCHAR *fname){
|
||||
return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
// XXX: Direct3D絡みのエラー対策
|
||||
{
|
||||
MSG msg;
|
||||
while(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
|
||||
{
|
||||
if (!GetMessage(&msg, NULL, 0, 0)) {
|
||||
break;
|
||||
}
|
||||
if ((msg.hwnd != hWnd) ||
|
||||
((msg.message != WM_SYSKEYDOWN) &&
|
||||
(msg.message != WM_SYSKEYUP))) {
|
||||
TranslateMessage(&msg);
|
||||
}
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}*/
|
||||
|
||||
CSoundMng::Initialize();
|
||||
OpenSoundDevice(hWnd);
|
||||
@ -3617,9 +3640,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
|
||||
#endif
|
||||
|
||||
pccore_term();
|
||||
|
||||
|
||||
CSoundMng::GetInstance()->Close();
|
||||
CSoundMng::Deinitialize();
|
||||
scrnmng_shutdown();
|
||||
scrnmng_destroy();
|
||||
recvideo_close();
|
||||
|
||||
|
24
win9x/resources/1252/np2.rc
Executable file → Normal file
24
win9x/resources/1252/np2.rc
Executable file → Normal file
@ -1,6 +1,6 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "..\\..\\resource.h"
|
||||
#include "..\..\resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@ -495,7 +495,7 @@ END
|
||||
IDD_SNDFMGEN DIALOG 0, 0, 184, 124
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "fmgen"
|
||||
FONT 9, "MS Pゴシック"
|
||||
FONT 9, "MS Pゴシック"
|
||||
BEGIN
|
||||
CONTROL "Use fmgen",IDC_USEFMGEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,58,10
|
||||
END
|
||||
@ -542,7 +542,7 @@ CAPTION "General"
|
||||
FONT 9, "MS Sans Serif", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "TAP device name",IDC_STATIC,8,8,76,8
|
||||
COMBOBOX IDC_NETTAP,8,18,168,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_NETTAP,8,18,168,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_AUTOHSCROLL
|
||||
CONTROL "Enable Power Management",IDC_NETPMM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,36,140,10
|
||||
END
|
||||
|
||||
@ -620,7 +620,7 @@ FONT 9, "MS Sans Serif", 0, 0, 0x0
|
||||
BEGIN
|
||||
CONTROL "Enable",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
|
||||
LTEXT "Shared Directory",IDC_STATIC,8,23,76,8
|
||||
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_AUTOHSCROLL
|
||||
PUSHBUTTON "Browse...",IDC_HOSTDRVBROWSE,140,32,44,14
|
||||
LTEXT "Permission",IDC_STATIC,8,51,76,8
|
||||
CONTROL "Read",IDC_HOSTDRVREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED,16,65,140,10
|
||||
@ -861,19 +861,19 @@ END
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"..¥¥..¥¥resource.h¥0"
|
||||
"..\\..\\resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""¥r¥n"
|
||||
"¥0"
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""np2.rc2""¥r¥n"
|
||||
"¥0"
|
||||
"#include ""np2.rc2""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
@ -1396,9 +1396,9 @@ BEGIN
|
||||
IDS_APP_NAME2 "Neko Project II/W"
|
||||
IDS_APP_NAME21 "Neko Project 21/W"
|
||||
IDS_FILENAME_HELP "np2.chm"
|
||||
IDS_FONTFACE "MS ゴシック"
|
||||
IDS_FONTFACE "MS ゴシック"
|
||||
IDS_PFONTFACE "MS Sans Serif"
|
||||
IDS_FONTFACE_PRIMARY "MS ゴシック"
|
||||
IDS_FONTFACE_PRIMARY "MS ゴシック"
|
||||
IDS_PFONTFACE_PRIMARY "MS Sans Serif"
|
||||
IDS_FONTFACE_SECONDARY "MS Gothic"
|
||||
END
|
||||
@ -1438,7 +1438,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CONFIRM_RESUME "Conflict!¥n¥n%s¥nContinue?"
|
||||
IDS_CONFIRM_RESUME "Conflict!\n\n%s\nContinue?"
|
||||
IDS_ERROR_RESUME "Couldn't restart"
|
||||
END
|
||||
|
||||
|
44
win9x/resources/1252/np2.rc2
Executable file → Normal file
44
win9x/resources/1252/np2.rc2
Executable file → Normal file
@ -6,15 +6,15 @@
|
||||
#ifdef NEEDS_MANIFEST
|
||||
#ifdef _WIN64
|
||||
#ifdef SUPPORT_PC9821
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np21x64.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np21x64.mnf"
|
||||
#else
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2x64.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2x64.mnf"
|
||||
#endif
|
||||
#else
|
||||
#ifdef SUPPORT_PC9821
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np21.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np21.mnf"
|
||||
#else
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2.mnf"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -25,8 +25,8 @@ IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2.mnf"
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,8,6,56
|
||||
PRODUCTVERSION 0,8,6,56
|
||||
FILEVERSION 0,8,6,59
|
||||
PRODUCTVERSION 0,8,6,59
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -41,30 +41,30 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "¥0"
|
||||
VALUE "FileVersion", "0, 8, 6, 54¥0"
|
||||
VALUE "LegalCopyright", "Nekosan development team¥0"
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileVersion", "0, 8, 6, 59\0"
|
||||
VALUE "LegalCopyright", "Nekosan development team\0"
|
||||
|
||||
VALUE "ProductVersion", "0, 8, 6, 54¥0"
|
||||
VALUE "ProductVersion", "0, 8, 6, 59\0"
|
||||
#ifdef _USRDLL
|
||||
VALUE "FileDescription", "PC-98x1series emulator resource file¥0"
|
||||
VALUE "ProductName", "Neko Project II resource file¥0"
|
||||
VALUE "InternalName", "np2_1252¥0"
|
||||
VALUE "OriginalFilename", "np2_1252.dll¥0"
|
||||
VALUE "FileDescription", "PC-98x1series emulator resource file\0"
|
||||
VALUE "ProductName", "Neko Project II resource file\0"
|
||||
VALUE "InternalName", "np2_1252\0"
|
||||
VALUE "OriginalFilename", "np2_1252.dll\0"
|
||||
#else
|
||||
#ifdef SUPPORT_PC9821
|
||||
VALUE "FileDescription", "PC-9821series emulator¥0"
|
||||
VALUE "ProductName", "Neko Project 21/W¥0"
|
||||
VALUE "FileDescription", "PC-9821series emulator\0"
|
||||
VALUE "ProductName", "Neko Project 21/W\0"
|
||||
#else
|
||||
VALUE "FileDescription", "PC-9801series emulator¥0"
|
||||
VALUE "ProductName", "Neko Project II/W¥0"
|
||||
VALUE "FileDescription", "PC-9801series emulator\0"
|
||||
VALUE "ProductName", "Neko Project II/W\0"
|
||||
#endif
|
||||
#ifdef SUPPORT_PC9821
|
||||
VALUE "InternalName", "np21¥0"
|
||||
VALUE "OriginalFilename", "np21.exe¥0"
|
||||
VALUE "InternalName", "np21\0"
|
||||
VALUE "OriginalFilename", "np21.exe\0"
|
||||
#else
|
||||
VALUE "InternalName", "np2¥0"
|
||||
VALUE "OriginalFilename", "np2.exe¥0"
|
||||
VALUE "InternalName", "np2\0"
|
||||
VALUE "OriginalFilename", "np2.exe\0"
|
||||
#endif
|
||||
#endif
|
||||
END
|
||||
|
6
win9x/resources/932/np2.rc
Executable file → Normal file
6
win9x/resources/932/np2.rc
Executable file → Normal file
@ -1,6 +1,6 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "..\\..\\resource.h"
|
||||
#include "..\..\resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@ -535,7 +535,7 @@ CAPTION "General"
|
||||
FONT 9, "‚l‚r ‚oƒSƒVƒbƒN", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "TAP device name",IDC_STATIC,8,8,76,8
|
||||
COMBOBOX IDC_NETTAP,8,18,168,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_NETTAP,8,18,168,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_AUTOHSCROLL
|
||||
CONTROL "Enable Power Management",IDC_NETPMM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,36,140,10
|
||||
END
|
||||
|
||||
@ -613,7 +613,7 @@ FONT 9, "
|
||||
BEGIN
|
||||
CONTROL "Enable",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
|
||||
LTEXT "Shared Directory",IDC_STATIC,8,23,76,8
|
||||
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_AUTOHSCROLL
|
||||
PUSHBUTTON "Browse...",IDC_HOSTDRVBROWSE,140,32,44,14
|
||||
LTEXT "Permission",IDC_STATIC,8,51,76,8
|
||||
CONTROL "Read",IDC_HOSTDRVREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,65,140,10
|
||||
|
44
win9x/resources/932/np2.rc2
Executable file → Normal file
44
win9x/resources/932/np2.rc2
Executable file → Normal file
@ -6,15 +6,15 @@
|
||||
#ifdef NEEDS_MANIFEST
|
||||
#ifdef _WIN64
|
||||
#ifdef SUPPORT_PC9821
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np21x64.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np21x64.mnf"
|
||||
#else
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2x64.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2x64.mnf"
|
||||
#endif
|
||||
#else
|
||||
#ifdef SUPPORT_PC9821
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np21.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np21.mnf"
|
||||
#else
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2.mnf"
|
||||
IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2.mnf"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -25,8 +25,8 @@ IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..¥¥np2.mnf"
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,8,6,58
|
||||
PRODUCTVERSION 0,8,6,58
|
||||
FILEVERSION 0,8,6,59
|
||||
PRODUCTVERSION 0,8,6,59
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -41,30 +41,30 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "041103a4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "¥0"
|
||||
VALUE "FileVersion", "0, 8, 6, 58¥0"
|
||||
VALUE "LegalCopyright", "ねこさん開発ちーむ¥0"
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileVersion", "0, 8, 6, 59\0"
|
||||
VALUE "LegalCopyright", "‚Ë‚±‚³‚ñŠJ”‚¿<EFBFBD>[‚Þ\0"
|
||||
|
||||
VALUE "ProductVersion", "0, 8, 6, 58¥0"
|
||||
VALUE "ProductVersion", "0, 8, 6, 59\0"
|
||||
#ifdef _USRDLL
|
||||
VALUE "FileDescription", "PC-98x1series emulator resource file¥0"
|
||||
VALUE "ProductName", "Neko Project II resource file¥0"
|
||||
VALUE "InternalName", "np2_932¥0"
|
||||
VALUE "OriginalFilename", "np2_932.dll¥0"
|
||||
VALUE "FileDescription", "PC-98x1series emulator resource file\0"
|
||||
VALUE "ProductName", "Neko Project II resource file\0"
|
||||
VALUE "InternalName", "np2_932\0"
|
||||
VALUE "OriginalFilename", "np2_932.dll\0"
|
||||
#else
|
||||
#ifdef SUPPORT_PC9821
|
||||
VALUE "FileDescription", "PC-9821series emulator¥0"
|
||||
VALUE "ProductName", "Neko Project 21/W¥0"
|
||||
VALUE "FileDescription", "PC-9821series emulator\0"
|
||||
VALUE "ProductName", "Neko Project 21/W\0"
|
||||
#else
|
||||
VALUE "FileDescription", "PC-9801series emulator¥0"
|
||||
VALUE "ProductName", "Neko Project II/W¥0"
|
||||
VALUE "FileDescription", "PC-9801series emulator\0"
|
||||
VALUE "ProductName", "Neko Project II/W\0"
|
||||
#endif
|
||||
#ifdef SUPPORT_PC9821
|
||||
VALUE "InternalName", "np21w¥0"
|
||||
VALUE "OriginalFilename", "np21w.exe¥0"
|
||||
VALUE "InternalName", "np21w\0"
|
||||
VALUE "OriginalFilename", "np21w.exe\0"
|
||||
#else
|
||||
VALUE "InternalName", "np2w¥0"
|
||||
VALUE "OriginalFilename", "np2w.exe¥0"
|
||||
VALUE "InternalName", "np2w\0"
|
||||
VALUE "OriginalFilename", "np2w.exe\0"
|
||||
#endif
|
||||
#endif
|
||||
END
|
||||
|
903
win9x/resources/932/np2jp.rc
Executable file → Normal file
903
win9x/resources/932/np2jp.rc
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
@ -152,6 +152,14 @@ void scrnmng_destroy(void) {
|
||||
scrnmng_current_drawtype = DRAWTYPE_INVALID;
|
||||
}
|
||||
|
||||
void scrnmng_shutdown(void) {
|
||||
|
||||
#ifdef SUPPORT_SCRN_DIRECT3D
|
||||
scrnmngD3D_shutdown();
|
||||
#endif
|
||||
scrnmngDD_shutdown();
|
||||
}
|
||||
|
||||
void scrnmng_querypalette(void) {
|
||||
|
||||
#ifdef SUPPORT_SCRN_DIRECT3D
|
||||
@ -440,4 +448,4 @@ void scrnmng_bltwab() {
|
||||
{
|
||||
scrnmngDD_bltwab();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -88,6 +88,7 @@ void scrnmng_setwindowsize(HWND hWnd, int width, int height);
|
||||
void scrnmng_initialize(void);
|
||||
BRESULT scrnmng_create(UINT8 scrnmode);
|
||||
void scrnmng_destroy(void);
|
||||
void scrnmng_shutdown(void);
|
||||
|
||||
void scrnmng_setwidth(int posx, int width);
|
||||
void scrnmng_setextend(int extend);
|
||||
|
@ -93,12 +93,15 @@ static int d3d_cs_initialized = 0;
|
||||
static CRITICAL_SECTION d3d_cs;
|
||||
|
||||
static BOOL d3d_tryenter_criticalsection(void){
|
||||
if(!d3d_cs_initialized) return TRUE;
|
||||
return TryEnterCriticalSection(&d3d_cs);
|
||||
}
|
||||
static void d3d_enter_criticalsection(void){
|
||||
if(!d3d_cs_initialized) return;
|
||||
EnterCriticalSection(&d3d_cs);
|
||||
}
|
||||
static void d3d_leave_criticalsection(void){
|
||||
if(!d3d_cs_initialized) return;
|
||||
LeaveCriticalSection(&d3d_cs);
|
||||
}
|
||||
|
||||
@ -1016,11 +1019,14 @@ void scrnmngD3D_destroy(void) {
|
||||
}
|
||||
ZeroMemory(&d3d, sizeof(d3d));
|
||||
d3d_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngD3D_shutdown(void) {
|
||||
|
||||
//if(d3d_cs_initialized){
|
||||
// DeleteCriticalSection(&d3d_cs);
|
||||
// d3d_cs_initialized = 0;
|
||||
//}
|
||||
if(d3d_cs_initialized){
|
||||
DeleteCriticalSection(&d3d_cs);
|
||||
d3d_cs_initialized = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void scrnmngD3D_querypalette(void) {
|
||||
|
@ -7,6 +7,7 @@ BRESULT scrnmngD3D_check(void);
|
||||
|
||||
BRESULT scrnmngD3D_create(UINT8 scrnmode);
|
||||
void scrnmngD3D_destroy(void);
|
||||
void scrnmngD3D_shutdown(void);
|
||||
|
||||
void scrnmngD3D_setwidth(int posx, int width);
|
||||
void scrnmngD3D_setextend(int extend);
|
||||
|
@ -84,6 +84,22 @@ static int mt_wabdrawing = 0;
|
||||
static int mt_wabpausedrawing = 0;
|
||||
#endif
|
||||
|
||||
static int dd_cs_initialized = 0;
|
||||
static CRITICAL_SECTION dd_cs;
|
||||
|
||||
static BOOL dd_tryenter_criticalsection(void){
|
||||
if(!dd_cs_initialized) return TRUE;
|
||||
return TryEnterCriticalSection(&dd_cs);
|
||||
}
|
||||
static void dd_enter_criticalsection(void){
|
||||
if(!dd_cs_initialized) return;
|
||||
EnterCriticalSection(&dd_cs);
|
||||
}
|
||||
static void dd_leave_criticalsection(void){
|
||||
if(!dd_cs_initialized) return;
|
||||
LeaveCriticalSection(&dd_cs);
|
||||
}
|
||||
|
||||
// プライマリサーフェイスのDirectDraw DDBLT_COLORFILLで例外が出る環境があるようなので代替
|
||||
//#define DDBLT_COLORFILL_FIX
|
||||
|
||||
@ -284,9 +300,12 @@ static void clearoutofrect(const RECT *target, const RECT *base) {
|
||||
LPDIRECTDRAWSURFACE primsurf;
|
||||
DDBLTFX ddbf;
|
||||
RECT rect;
|
||||
|
||||
dd_enter_criticalsection();
|
||||
|
||||
primsurf = ddraw.primsurf;
|
||||
if (primsurf == NULL) {
|
||||
dd_leave_criticalsection();
|
||||
return;
|
||||
}
|
||||
ZeroMemory(&ddbf, sizeof(ddbf));
|
||||
@ -324,6 +343,8 @@ static void clearoutofrect(const RECT *target, const RECT *base) {
|
||||
DDBlt_ColorFill(primsurf, &rect, &ddbf, ddraw.backsurf);
|
||||
}
|
||||
}
|
||||
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
static void clearoutscreen(void) {
|
||||
@ -373,6 +394,7 @@ const RECT *scrn;
|
||||
static void paletteinit()
|
||||
{
|
||||
HDC hdc = GetDC(g_hWndMain);
|
||||
dd_enter_criticalsection();
|
||||
GetSystemPaletteEntries(hdc, 0, 256, ddraw.pal);
|
||||
ReleaseDC(g_hWndMain, hdc);
|
||||
#if defined(SUPPORT_DCLOCK)
|
||||
@ -391,10 +413,12 @@ static void paletteinit()
|
||||
}
|
||||
ddraw.ddraw2->CreatePalette(DDPCAPS_8BIT, ddraw.pal, &ddraw.palette, 0);
|
||||
ddraw.primsurf->SetPalette(ddraw.palette);
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
static void paletteset()
|
||||
{
|
||||
dd_enter_criticalsection();
|
||||
if (ddraw.palette != NULL)
|
||||
{
|
||||
for (UINT i = 0; i < PALLETES_8BPP; i++)
|
||||
@ -405,12 +429,14 @@ static void paletteset()
|
||||
}
|
||||
ddraw.palette->SetEntries(0, START_PAL, PALLETES_8BPP, &ddraw.pal[START_PAL]);
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
static void make16mask(DWORD bmask, DWORD rmask, DWORD gmask) {
|
||||
|
||||
UINT8 sft;
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
sft = 0;
|
||||
while((!(bmask & 0x80)) && (sft < 32)) {
|
||||
bmask <<= 1;
|
||||
@ -434,15 +460,18 @@ static void make16mask(DWORD bmask, DWORD rmask, DWORD gmask) {
|
||||
}
|
||||
ddraw.pal16mask.p.g = (UINT8)gmask;
|
||||
ddraw.l16g = sft;
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
static void restoresurfaces() {
|
||||
dd_enter_criticalsection();
|
||||
ddraw.backsurf->Restore();
|
||||
ddraw.primsurf->Restore();
|
||||
#if defined(SUPPORT_WAB)
|
||||
ddraw.wabsurf->Restore();
|
||||
#endif
|
||||
scrndraw_updateallline();
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
|
||||
@ -484,7 +513,14 @@ BRESULT scrnmngDD_create(UINT8 scrnmode) {
|
||||
|
||||
static UINT8 lastscrnmode = 0;
|
||||
static WINDOWPLACEMENT wp = {sizeof(WINDOWPLACEMENT)};
|
||||
|
||||
|
||||
if(!dd_cs_initialized){
|
||||
memset(&dd_cs, 0, sizeof(dd_cs));
|
||||
InitializeCriticalSection(&dd_cs);
|
||||
dd_cs_initialized = 1;
|
||||
}
|
||||
|
||||
dd_enter_criticalsection();
|
||||
ZeroMemory(&scrnmng, sizeof(scrnmng));
|
||||
winstyle = GetWindowLong(g_hWndMain, GWL_STYLE);
|
||||
winstyleex = GetWindowLong(g_hWndMain, GWL_EXSTYLE);
|
||||
@ -812,15 +848,18 @@ BRESULT scrnmngDD_create(UINT8 scrnmode) {
|
||||
#if defined(SUPPORT_WAB)
|
||||
mt_wabpausedrawing = 0; // MultiThread対策
|
||||
#endif
|
||||
dd_leave_criticalsection();
|
||||
return(SUCCESS);
|
||||
|
||||
scre_err:
|
||||
dd_leave_criticalsection();
|
||||
scrnmngDD_destroy();
|
||||
return(FAILURE);
|
||||
}
|
||||
|
||||
void scrnmngDD_destroy(void) {
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
if (scrnmng.flag & SCRNFLAG_FULLSCREEN) {
|
||||
np2class_enablemenu(g_hWndMain, (!np2oscfg.wintype));
|
||||
}
|
||||
@ -867,13 +906,24 @@ void scrnmngDD_destroy(void) {
|
||||
ddraw.ddraw1 = NULL;
|
||||
}
|
||||
ZeroMemory(&ddraw, sizeof(ddraw));
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngDD_shutdown(void) {
|
||||
|
||||
if(dd_cs_initialized){
|
||||
DeleteCriticalSection(&dd_cs);
|
||||
dd_cs_initialized = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void scrnmngDD_querypalette(void) {
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
if (ddraw.palette) {
|
||||
ddraw.primsurf->SetPalette(ddraw.palette);
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
RGB16 scrnmngDD_makepal16(RGB32 pal32) {
|
||||
@ -888,7 +938,8 @@ RGB16 scrnmngDD_makepal16(RGB32 pal32) {
|
||||
void scrnmngDD_fullscrnmenu(int y) {
|
||||
|
||||
UINT8 menudisp;
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
if (scrnmng.flag & SCRNFLAG_FULLSCREEN) {
|
||||
menudisp = ((y >= 0) && (y < ddraw.menusize))?1:0;
|
||||
if (ddraw.menudisp != menudisp) {
|
||||
@ -902,11 +953,13 @@ void scrnmngDD_fullscrnmenu(int y) {
|
||||
}
|
||||
}
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngDD_topwinui(void) {
|
||||
|
||||
mousemng_disable(MOUSEPROC_WINUI);
|
||||
dd_enter_criticalsection();
|
||||
if (!ddraw.cliping++) { // ver0.28
|
||||
if (scrnmng.flag & SCRNFLAG_FULLSCREEN) {
|
||||
ddraw.primsurf->SetClipper(ddraw.clipper);
|
||||
@ -915,10 +968,12 @@ void scrnmngDD_topwinui(void) {
|
||||
WINNLSEnableIME(g_hWndMain, TRUE);
|
||||
#endif
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngDD_clearwinui(void) {
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
if ((ddraw.cliping > 0) && (!(--ddraw.cliping))) {
|
||||
#ifndef __GNUC__
|
||||
WINNLSEnableIME(g_hWndMain, FALSE);
|
||||
@ -945,12 +1000,14 @@ void scrnmngDD_clearwinui(void) {
|
||||
if (scrnmng_create(g_scrnmode) != SUCCESS) {
|
||||
g_scrnmode &= ~SCRNMODE_FULLSCREEN;
|
||||
if (scrnmng_create(g_scrnmode) != SUCCESS) {
|
||||
dd_leave_criticalsection();
|
||||
PostQuitMessage(0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
scrnmng.forcereset = 0;
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngDD_setwidth(int posx, int width) {
|
||||
@ -989,14 +1046,17 @@ const SCRNSURF *scrnmngDD_surflock(void) {
|
||||
if (ddraw.backsurf == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
dd_enter_criticalsection();
|
||||
r = ddraw.backsurf->Lock(NULL, &destscrn, DDLOCK_WAIT, NULL);
|
||||
if (r == DDERR_SURFACELOST) {
|
||||
restoresurfaces();
|
||||
dd_leave_criticalsection();
|
||||
return(NULL);
|
||||
//r = ddraw.backsurf->Lock(NULL, &destscrn, DDLOCK_WAIT, NULL);
|
||||
}
|
||||
if (r != DD_OK) {
|
||||
// TRACEOUT(("backsurf lock error: %d (%d)", r));
|
||||
dd_leave_criticalsection();
|
||||
return(NULL);
|
||||
}
|
||||
if (!(ddraw.scrnmode & SCRNMODE_ROTATE)) {
|
||||
@ -1024,6 +1084,7 @@ void scrnmngDD_surfunlock(const SCRNSURF *surf) {
|
||||
ddraw.backsurf->Unlock(NULL);
|
||||
scrnmngDD_update();
|
||||
recvideo_update();
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
void scrnmngDD_update(void) {
|
||||
@ -1033,7 +1094,8 @@ void scrnmngDD_update(void) {
|
||||
RECT *rect;
|
||||
RECT *scrn;
|
||||
HRESULT r;
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
if (scrnmng.palchanged) {
|
||||
scrnmng.palchanged = FALSE;
|
||||
paletteset();
|
||||
@ -1056,6 +1118,7 @@ void scrnmngDD_update(void) {
|
||||
DDBLT_WAIT, NULL);
|
||||
if (r == DDERR_SURFACELOST) {
|
||||
restoresurfaces();
|
||||
dd_leave_criticalsection();
|
||||
return;
|
||||
//ddraw.primsurf->Blt(scrn, ddraw.backsurf, rect,
|
||||
// DDBLT_WAIT, NULL);
|
||||
@ -1077,12 +1140,14 @@ void scrnmngDD_update(void) {
|
||||
DDBLT_WAIT, NULL);
|
||||
if (r == DDERR_SURFACELOST) {
|
||||
restoresurfaces();
|
||||
dd_leave_criticalsection();
|
||||
return;
|
||||
//ddraw.primsurf->Blt(&dst, ddraw.backsurf, &ddraw.rect,
|
||||
// DDBLT_WAIT, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
|
||||
|
||||
@ -1144,7 +1209,8 @@ void scrnmngDD_dispclock(void)
|
||||
return;
|
||||
}
|
||||
DispClock::GetInstance()->Make();
|
||||
|
||||
|
||||
dd_enter_criticalsection();
|
||||
DDSURFACEDESC dest;
|
||||
ZeroMemory(&dest, sizeof(dest));
|
||||
dest.dwSize = sizeof(dest);
|
||||
@ -1162,6 +1228,7 @@ void scrnmngDD_dispclock(void)
|
||||
ddraw.clocksurf->Restore();
|
||||
}
|
||||
DispClock::GetInstance()->CountDown(np2oscfg.DRAW_SKIP);
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1299,21 +1366,26 @@ void scrnmngDD_updatefsres(void) {
|
||||
ddbf.dwFillColor = 0;
|
||||
|
||||
if((np2oscfg.fscrnmod & FSCRNMOD_SAMERES) && (g_scrnmode & SCRNMODE_FULLSCREEN)){
|
||||
dd_enter_criticalsection();
|
||||
ddraw.wabsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
ddraw.backsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
clearoutscreen();
|
||||
np2wab.lastWidth = 0;
|
||||
np2wab.lastHeight = 0;
|
||||
dd_leave_criticalsection();
|
||||
return;
|
||||
}
|
||||
if(scrnstat.width<100 || scrnstat.height<100){
|
||||
dd_enter_criticalsection();
|
||||
ddraw.wabsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
ddraw.backsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
clearoutscreen();
|
||||
dd_leave_criticalsection();
|
||||
return;
|
||||
}
|
||||
|
||||
if(np2wab.lastWidth!=width || np2wab.lastHeight!=height){
|
||||
dd_enter_criticalsection();
|
||||
np2wab.lastWidth = width;
|
||||
np2wab.lastHeight = height;
|
||||
if((g_scrnmode & SCRNMODE_FULLSCREEN)!=0){
|
||||
@ -1341,6 +1413,7 @@ void scrnmngDD_updatefsres(void) {
|
||||
clearoutscreen();
|
||||
ddraw.wabsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
ddraw.backsurf->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddbf);
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1356,6 +1429,7 @@ void scrnmngDD_blthdc(HDC hdc) {
|
||||
if (np2wab.wndWidth < 32 || np2wab.wndHeight < 32) return;
|
||||
if (mt_wabpausedrawing) return;
|
||||
if (ddraw.wabsurf != NULL) {
|
||||
dd_enter_criticalsection();
|
||||
mt_wabdrawing = 1;
|
||||
r = ddraw.wabsurf->GetDC(&hDCDD);
|
||||
if (r == DD_OK){
|
||||
@ -1363,6 +1437,7 @@ void scrnmngDD_blthdc(HDC hdc) {
|
||||
ddraw.wabsurf->ReleaseDC(hDCDD);
|
||||
}
|
||||
mt_wabdrawing = 0;
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1393,10 +1468,12 @@ void scrnmngDD_bltwab() {
|
||||
dstmp = *dst;
|
||||
dstmp.left += exmgn;
|
||||
dstmp.right = dstmp.left + scrnstat.width;
|
||||
dd_enter_criticalsection();
|
||||
r = ddraw.backsurf->Blt(&dstmp, ddraw.wabsurf, &src, DDBLT_WAIT, NULL);
|
||||
if (r == DDERR_SURFACELOST) {
|
||||
restoresurfaces();
|
||||
}
|
||||
dd_leave_criticalsection();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ extern "C" {
|
||||
|
||||
BRESULT scrnmngDD_create(UINT8 scrnmode);
|
||||
void scrnmngDD_destroy(void);
|
||||
void scrnmngDD_shutdown(void);
|
||||
|
||||
void scrnmngDD_setwidth(int posx, int width);
|
||||
void scrnmngDD_setextend(int extend);
|
||||
|
Loading…
Reference in New Issue
Block a user