チケット #40501

ブロードキャストコマンドのUnicode化

登録: 2020-06-23 00:03 最終更新: 2022-01-07 00:43

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

  • Unicodeを扱えるようにする
    • Unicode(漢字)などが入力できるようにする
    • 同様にペーストできるようにする

チケットの履歴 (10 件中 3 件表示)

2020-06-23 00:03 更新者: zmatsuo
  • 新しいチケット "ブロードキャストコマンドのUniode化" が作成されました
2020-06-23 00:04 更新者: zmatsuo
コメント
2020-06-23 00:18 更新者: zmatsuo
コメント
  • broadcast ブランチで調整中
  • broadcast がすぐに伝わらない事があるようだ
    • メッセージポンプの GetMessage() でブロックしている?
2020-06-23 00:19 更新者: zmatsuo
  • 詳細が更新されました
2020-06-23 08:49 更新者: doda
  • 概要が更新されました
2020-06-28 23:28 更新者: zmatsuo
コメント

時々ブロードキャストの受信が遅い現象が見られたため調査。

  • 通常はウィンドウメッセージを処理するウィンドウプロシージャは メッセージポンプを経由してコールされる
        メッセージポンプ
           GetMessage()
           TranslateMessage()
           DispatchMessage()
           idle処理など
         ↓
         各ウィンドウプロシージャ
    
  • なにかのきっかけで SendMessage() のメッセージは ウィンドウプロシージャに直接送られ、メッセージポンプを通らなくなる
    • なにかのきっかけで、再度メッセージポンプを通るようになる
  • Tera Termではメッセージポンプ内のidle処理で送受信処理を行う
  • ブロードキャスト処理では SendMessage(WM_COPYDATA) で VTWin に文字を送り込む
  • このため、ブロードキャストでは時々送受信処理が止まることがある
  • Tera Termで何らかのメッセージ処理が行われると溜まっていた処理が行われる
    • ウィンドウ上をマウスカーソルが移動するなど
(編集済, 2020-06-28 23:49 更新者: zmatsuo)
2020-06-28 23:47 更新者: zmatsuo
コメント

r8819 で対策しました。

WM_COPYDATA メッセージを処理する際、 SetTimer()を使ってWM_TIMERを発生させるようにしました。

SetTimer() は、指定した関数を呼び出せるためか、 WM_TIMRはプライオリティの低いメッセージのためか、 必ずメッセージポンプを経由するようです。

r8818 はテストをするために作成した、 文字列を送り込むコマンドラインのプログラムです。

Tera Term の設定でマルチキャスト名を設定できるようにして、 これと合わせて使えば便利に使えるかもしれません。

いまのところ cmake ビルドでのみビルドされます。

1週間程度様子を見て、trunk にマージします。

2020-06-28 23:52 更新者: zmatsuo
  • 解決法なし から 修正済み に更新されました
2020-07-03 23:51 更新者: zmatsuo
コメント

trunkにマージしました。

r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830

2022-01-07 00:43 更新者: zmatsuo
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする