Fix bugs of deadlock around file deletion.
Adjust performance of simultaneous connection.
Fix bugs of UI for Kanji code of filenames.
Change handling timestamp that do not include year.
This version may be nearly stable (not for 1.99 but for 1.98b).
CONTROL "UTF-8",HSET_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,12,69,41,10\r
CONTROL "Hankaku to Zenkaku",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,96,90,10\r
GROUPBOX "&Filename Kanji Code",-1,107,7,97,116,WS_GROUP\r
- CONTROL "Automatic",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,114,21,65,10\r
- CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,111,33,65,10\r
+ CONTROL "Automatic",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,111,21,65,10\r
+ CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,111,33,65,10\r
CONTROL "JIS",HSET_FN_JIS_CNV,"Button",BS_AUTORADIOBUTTON,111,45,70,10\r
CONTROL "EUC",HSET_FN_EUC_CNV,"Button",BS_AUTORADIOBUTTON,111,57,41,10\r
CONTROL "Samba-HEX",HSET_FN_SMH_CNV,"Button",BS_AUTORADIOBUTTON,111,69,66,10\r
\r
/* 年がない */\r
/* 現在の日付から推定 */\r
- if((sTimeNow.wMonth == 12) && (sTime.wMonth == 1))\r
- sTime.wYear++;\r
- else if(sTimeNow.wMonth+1 == sTime.wMonth)\r
+ // 恐らくホストとローカルの時刻が異なる場合の対処のようだがとりあえず無効にする\r
+// if((sTimeNow.wMonth == 12) && (sTime.wMonth == 1))\r
+// sTime.wYear++;\r
+// else if(sTimeNow.wMonth+1 == sTime.wMonth)\r
+ if(sTimeNow.wMonth+1 == sTime.wMonth)\r
/* nothing */;\r
else if(sTimeNow.wMonth < sTime.wMonth)\r
sTime.wYear--;\r
char CurDir[FMAX_PATH+1];\r
char Tmp[FMAX_PATH+1];\r
\r
+ // デッドロック対策\r
+ DisableUserOpe();\r
Sts = YES;\r
AskRemoteCurDir(CurDir, FMAX_PATH);\r
FileListBase = NULL;\r
\r
if(Sts == YES)\r
{\r
- DisableUserOpe();\r
+ // デッドロック対策\r
+// DisableUserOpe();\r
\r
DelFlg = NO;\r
Sts = NO;\r
GetRemoteDirForWnd(CACHE_REFRESH, &CancelFlg);\r
}\r
\r
- EnableUserOpe();\r
+ // デッドロック対策\r
+// EnableUserOpe();\r
}\r
+ // デッドロック対策\r
+ EnableUserOpe();\r
return;\r
}\r
\r
static char CurDir[FMAX_PATH+1] = { "" };\r
static char ErrMsg[ERR_MSG_LEN+7];\r
\r
+// 同時接続対応\r
+static int WaitForMainThread = NO;\r
+\r
/*===== 外部参照 =====*/\r
\r
/* 設定値 */\r
// WaitForSingleObject(hListAccMutex, INFINITE);\r
while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
{\r
+ WaitForMainThread = YES;\r
BackgrndMessageProc();\r
Sleep(1);\r
}\r
if(NextTransPacketBase == NULL)\r
NextTransPacketBase = TransPacketBase;\r
ReleaseMutex(hListAccMutex);\r
+ // 同時接続対応\r
+ WaitForMainThread = NO;\r
\r
return;\r
}\r
// WaitForSingleObject(hListAccMutex, INFINITE);\r
while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
{\r
+ WaitForMainThread = YES;\r
BackgrndMessageProc();\r
Sleep(1);\r
}\r
}\r
\r
ReleaseMutex(hListAccMutex);\r
+ // 同時接続対応\r
+ WaitForMainThread = NO;\r
return;\r
}\r
\r
// WaitForSingleObject(hListAccMutex, INFINITE);\r
while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
{\r
+ WaitForMainThread = YES;\r
BackgrndMessageProc();\r
Sleep(1);\r
}\r
TransFiles = 0;\r
PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
ReleaseMutex(hListAccMutex);\r
+ // 同時接続対応\r
+ WaitForMainThread = NO;\r
\r
strcpy(Pkt.Cmd, "GOQUIT");\r
AddTransFileList(&Pkt);\r
CmdSkt = INVALID_SOCKET;\r
NewCmdSkt = INVALID_SOCKET;\r
TrnSkt = INVALID_SOCKET;\r
+ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);\r
\r
while((TransPacketBase != NULL) ||\r
(WaitForSingleObject(hRunMutex, 200) == WAIT_TIMEOUT))\r
if(fTransferThreadExit == TRUE)\r
break;\r
\r
+ if(WaitForMainThread == YES)\r
+ {\r
+ BackgrndMessageProc();\r
+ Sleep(100);\r
+ continue;\r
+ }\r
+\r
// WaitForSingleObject(hListAccMutex, INFINITE);\r
while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
{\r
}\r
}\r
BackgrndMessageProc();\r
- Sleep(1);\r
+// Sleep(1);\r
+ Sleep(100);\r
\r
if(GoExit == YES)\r
{\r
hWndTrans = NULL;\r
}\r
BackgrndMessageProc();\r
- Sleep(1);\r
+ if(ThreadCount < AskMaxThreadCount())\r
+ Sleep(1);\r
+ else\r
+ Sleep(100);\r
}\r
}\r
if(TrnSkt != INVALID_SOCKET)\r
{\r
// 強制的に閉じられたソケットがあると重複する可能性あり\r
// MessageBox(GetMainHwnd(), "Async socket already registerd.", "FFFTP inner error", MB_OK);\r
+// break;\r
Signal[Pos].Socket = INVALID_SOCKET;\r
- break;\r
}\r
}\r
// スレッド衝突のバグ修正\r