[Ttssh2-commit] [6217] シリアルポート脱着時の自動切断・再接続をリファクタリング

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2015年 12月 21日 (月) 20:56:58 JST


Revision: 6217
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6217
Author:   maya
Date:     2015-12-21 20:56:58 +0900 (Mon, 21 Dec 2015)
Log Message:
-----------
シリアルポート脱着時の自動切断・再接続をリファクタリング
  COMポートをチェックにし行くデバイスタイプを限定
  デバイス削除時と追加時の処理を分離した

Modified Paths:
--------------
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2015-12-20 15:16:40 UTC (rev 6216)
+++ trunk/teraterm/teraterm/vtwin.cpp	2015-12-21 11:56:58 UTC (rev 6217)
@@ -3115,22 +3115,21 @@
 
 BOOL CVTWindow::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
 {
-	if (nEventType == DBT_DEVICEARRIVAL || nEventType == DBT_DEVICEREMOVECOMPLETE) {
-		if (ts.PortType == IdSerial) {
-			if (!ts.AutoComPortReconnect) {
-				return CFrameWnd::OnDeviceChange(nEventType, dwData);
-			}
+	PDEV_BROADCAST_PORT pDevPort;
 
-			if (cv.Open != 0) {
-				/* \x90ڑ\xB1\x92\x86 */
-				if (AutoDisconnectedPort == -1 && CheckComPort(cv.ComPort) == 0) {
-					AutoDisconnectedPort = cv.ComPort;
-					Disconnect(TRUE);
-				}
-			}
-			else {
-				/* \x96\xA2\x90ڑ\xB1 */
-				if (AutoDisconnectedPort == ts.ComPort && CheckComPort(ts.ComPort) == 1) {
+	pDevPort = (PDEV_BROADCAST_PORT)dwData;
+
+	switch (nEventType) {
+	case DBT_DEVICEARRIVAL:
+		//OutputDebugPrintf("DBT_DEVICEARRIVAL %d\n", pDevPort->dbcp_devicetype);
+		if (pDevPort->dbcp_devicetype == DBT_DEVTYP_PORT &&
+		    ts.PortType == IdSerial &&
+		    ts.AutoComPortReconnect &&
+		    AutoDisconnectedPort == ts.ComPort) {
+			if (!cv.Open) {
+				/* Tera Term \x96\xA2\x90ڑ\xB1 */
+				if (CheckComPort(ts.ComPort) == 1) {
+					/* \x83|\x81[\x83g\x82\xAA\x97L\x8C\xF8 */
 					AutoDisconnectedPort = -1;
 					Connecting = TRUE;
 					ChangeTitle();
@@ -3138,7 +3137,25 @@
 				}
 			}
 		}
+		break;
+	case DBT_DEVICEREMOVECOMPLETE:
+		//OutputDebugPrintf("DBT_DEVICEREMOVECOMPLETE %d\n", pDevPort->dbcp_devicetype);
+		if (pDevPort->dbcp_devicetype == DBT_DEVTYP_PORT &&
+		    ts.PortType == IdSerial &&
+		    ts.AutoComPortReconnect &&
+		    AutoDisconnectedPort == -1) {
+			if (cv.Open) {
+				/* Tera Term \x90ڑ\xB1\x92\x86 */
+				if (CheckComPort(cv.ComPort) == 0) {
+					/* \x83|\x81[\x83g\x82\xAA\x96\xB3\x8C\xF8 */
+					AutoDisconnectedPort = cv.ComPort;
+					Disconnect(TRUE);
+				}
+			}
+		}
+		break;
 	}
+
 	return CFrameWnd::OnDeviceChange(nEventType, dwData);
 }
 



Ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index