Re: 処理が止まる ( No.1 ) |
- 名前:管理人 日時:2016/05/05 18:16
|
Re: 処理が止まる ( No.2 ) |
- 名前:kk 日時:2016/05/06 22:00
管理人様回答ありがとうございます。
なるほど、そうですか。
確認しました。
タイトルバーをドラッグされていることを検知することはできないでしょうか?
|
Re: 処理が止まる ( No.3 ) |
- 名前:管理人 日時:2016/05/08 17:37
「タイトルバーを掴んでいる間処理が止まる」のは「タイトルバーを掴んでいる間
ProcessMessage 関数から処理が戻ってこない」からなので、仮に「タイトルバーが
掴まれているかどうか」をチェックする処理を追加したとしても、その処理が
実行されるのはタイトルバーが離されてからとなり意味のないものとなってしまいます
|
Re: 処理が止まる ( No.4 ) |
- 名前:yumetodo 日時:2016/05/09 22:14
callback追加しか無い・・・のかな?
|
Re: 処理が止まる ( No.5 ) |
- 名前:管理人 日時:2016/05/10 15:39
> yumetodoさん
callback追加とはなんのことでしょうか…?
|
Re: 処理が止まる ( No.6 ) |
- 名前:kk 日時:2016/05/11 21:21
管理人様回答ありがとうございます。
言われてみればそうですね。
yumetodo様 callbackとはどういったことの事でしょうか?
|
Re: 処理が止まる ( No.7 ) |
- 名前:yumetodo 日時:2016/05/12 09:47
タイトルバーを掴んだというイベントがDxLib側で認識できれば、
callback関数を登録すれば掴んでいる間にも(描画はできないだろうけど)なんか処理できるんじゃないか
と思ったんですが・・・。
もっともDxLibでtemplateやらlambdaやらが使えるとは思えないのでかなり面倒ですが。
|
Re: 処理が止まる() ( No.8 ) |
- 名前:kk 日時:2016/05/13 02:09
yumetodo様、返答ありがとうございます。そういうことでしたか。提案ありがとうございます。
管理人様、スレッドでタイトルバーをドラッグ中にも処理を実行させるというのは、実行したい処理一つにつきスレッドを一つ作り対応させるということでしょうか?
あまり理解できておらず、すみません。
|
Re: 処理が止まる ( No.9 ) |
- 名前:管理人 日時:2016/05/13 02:54
> yumetodoさん
> タイトルバーを掴んだというイベントがDxLib側で認識できれば、
> callback関数を登録すれば掴んでいる間にも(描画はできないだろうけど)なんか処理できるんじゃないか
> と思ったんですが・・・。
うーん…
少し考えた限りでは別スレッドで処理を実行する以外では掴んでいる間はやはり何もできないと思います
> kkさん
> 管理人様、スレッドでタイトルバーをドラッグ中にも処理を実行させるというのは、
> 実行したい処理一つにつきスレッドを一つ作り対応させるということでしょうか?
いえ、メインスレッドとは別に作成すべきスレッドは一つで十分です
( 何個も何回もスレッドを作成する必要はありません )
No.1 の書き込みでご紹介したこちらのスレッドの
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3759
No.10 の書き込みはご覧になられましたでしょうか?
因みに、こちらに書かれている通りにしても正常に動作することを保証するわけではなく、
あくまで裏技のような方法なので、上記スレッドの No.10 を読まれただけでは内容が理解
できないとのことでしたら、申し訳ありませんが挑戦されない方が良いと思います…
|
Re: 処理が止まる ( No.10 ) |
- 名前:yumetodo 日時:2016/05/13 21:27
そういえばNo10のって、メインスレッドで裏画面に描画中に描画スレッドでScreenFlipした場合どういう挙動になるんだろう。
関数単位ではmutexされてるだろうけど複数の描画関数を読んだ場合。
[ThreadName]:[function call]
main:描画関数1()
draw:ScreenFlip()
main:描画関数2()
とあった時描画関数1()と描画関数2()の描画先は同じでしたっけ?
|
Re: 処理が止まる(解決) ( No.11 ) |
- 名前:kk 日時:2016/05/16 20:32
管理者様ご回答ありがとうございます。
今回はスレッドの件は見送りたいと思います。
何度もありがとうございました。
また質問することがあるかもしれませんがその時はよろしくお願いします。
yumetodo様ご意見を色々とありがとうございました。
上記の疑問には知識不足でお答えできません。
申し訳ありません。
これをもって解決とさせていただきます。
|
Re: 処理が止まる ( No.12 ) |
- 名前:管理人(解決) 日時:2016/05/17 02:16
> yumetodoさん
> そういえばNo10のって、メインスレッドで裏画面に描画中に描画スレッドでScreenFlipした場合どういう挙動になるんだろう。
DXライブラリの関数はスレッドフリーではありませんので、動作は不定となります
> 関数単位ではmutexされてるだろうけど複数の描画関数を読んだ場合。
DXライブラリの関数のことでしたら、関数単位で mutex はしていませんので複数のスレッドで
描画関数が同時に呼ばれた場合、同時に処理が実行されることになります( 当然まともには動作しません )
> kkさん
ご期待に沿えず申し訳ありません m(_ _;m
|
Re: 処理が止まる ( No.13 ) |
- 名前:yumetodo(解決したけど余談) 日時:2016/05/17 15:48
>DXライブラリの関数のことでしたら、関数単位で mutex はしていませんので
あれ、DX_THREAD_SAFEをdefineしてコンパイルしてもされないんでしたっけ
|
Re: 処理が止まる ( No.14 ) |
- 名前:管理人(解決) 日時:2016/05/18 00:29
> あれ、DX_THREAD_SAFEをdefineしてコンパイルしてもされないんでしたっけ
DX_THREAD_SAFE を有効にした場合はDXライブラリの関数が同時に実行されることはなくなり
[ThreadName]:[function call]
main:描画関数1()
draw:ScreenFlip()
main:描画関数2()
↑こちらの順番で実行した場合は、呼び出した順番通りに実行されます
( ただ一回の関数呼び出しが非常に重くなります )
|