Menu

#408 WSHマクロの中断ダイアログ表示後に固まる

None
closed
nobody
None
5
2013-04-19
2013-04-12
Moca
No

Discussion

  • Moca

    Moca - 2013-04-13

    skrw_fix_macro_sleep_v2.patch
    ダイアログの破棄までメッセージループが回るように修正しました。
    CDlgCancelのメモリーリーク修正

     
  • Moca

    Moca - 2013-04-16

    ・リソースリークの修正
    ・SleepをWaitForSingleObjectに変更
    ・待機時間「0」以下のときは、スレッドを作成しないように。

     
  • Moca

    Moca - 2013-04-17

    pcDlgCancel->IsCanceled()は、WM_CLOSEすると必ずtrueなので、少し変更。
    https://sourceforge.net/p/sakura-editor/patchunicode/425/
    と、2chコメントをもとにさらに修正
    GetMessege -> while(PeekMessage)に修正(ダイアログの表示がおかしいのを修正)

     
  • ds14050

    ds14050 - 2013-04-17

    美的なことなのですが……

    if(dwResult == WAIT_OBJECT_0){
    }else if(dwResult != WAIT_OBJECT_0+1){
    }else{

    は理解が難しいので、節と条件を入れ替えて

    if(dwResult == WAIT_OBJECT_0){
    }else if(dwResult == WAIT_OBJECT_0+1){
    }else{

    にしませんか?

     

    Last edit: ds14050 2013-04-17
  • ds14050

    ds14050 - 2013-04-17

    メインスレッドで
    sThreadParam.pEngine = NULL;

    中断スレッドで
    if( p ){
    DEBUG_TRACE(_T("AbortMacro: Try Interrupt\n"));
    p->InterruptScriptThread(SCRIPTTHREADID_BASE, NULL, 0);
    DEBUG_TRACE(_T("AbortMacro: Done\n"));
    }

    していますがこのチェックはマルチスレッドでは無意味ではないですか?
    sThreadParam.pEngine = NULL;
    しなくても、マクロ実行中・実行終了後関係なく
    p->InterruptScriptThread(SCRIPTTHREADID_BASE, NULL, 0);
    してしまっても、(JScriptでは)問題ないのではないでしょうか。

     
  • Moca

    Moca - 2013-04-17

    指摘された2点修正しました。

     
  • ds14050

    ds14050 - 2013-04-17

    昨日から間違えてばかりですが……

    このチェックはマルチスレッドでは無意味ではないですか?

    というコメントはコードを正しく理解したうえでのものではありませんでした。すみません。

    sThreadParam.pEngine = NULL;
    -----------↑別スレッド↓-------------------------
    if( p ){
    p->InterruptScriptThread(SCRIPTTHREADID_BASE, NULL, 0);
    }

    というコードは、ぬるぽを起こすものではないのはもちろん、マクロ実行終了後の InterruptScriptThread呼び出しを(確実に)ブロックするものでもありませんが、不必要なInterruptScriptThread呼び出しを節約するものではありそうです。自分の環境ではキー入力のリピート速度を最速にしてマクロを連続実行してもキー入力が律速していましたので、あえて行数を費やして節約する必要はないのかなあ(v6パッチでいきましょう)という結論です。

     

    Last edit: ds14050 2013-04-17
  • Moca

    Moca - 2013-04-19

    [r2881]でコミットしました。

     

    Related

    Commit: [r2881]

  • Moca

    Moca - 2013-04-19
    • status: open --> closed
    • Group: -->
     

Log in to post a comment.