トップページ > 記事閲覧
処理が止まる
名前:kk 日時: 2016/05/02 23:02

初心者です。 DXライブラリでゲーム制作しています。 タイトルバーをドラッグ中に画像描画等の処理が止まります。 処理が止まらないようにする方法ありませんか?
メンテ

Page: 1 |

Re: 処理が止まる ( No.1 )
名前:管理人 日時:2016/05/05 18:16

すみません、DXライブラリではタイトルバーをドラッグ中に動作が止まってしまう 現象が発生しないようにすることに基本的には対応していません こちらのスレッドの No.10 の書き込みで https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3759 少し無理矢理『タイトルバーをドラッグ中も動作が止まらない』を実現する方法について 記載していますので、よろしければご覧ください m(_ _;m
メンテ
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() ↑こちらの順番で実行した場合は、呼び出した順番通りに実行されます ( ただ一回の関数呼び出しが非常に重くなります )
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存