Re: フルスクリーンと非同期読み込み ( No.1 ) |
- 名前:S.S. 日時:2015/03/16 23:52
横長になってしまいましたね...
大変失礼いたしました。
|
Re: フルスクリーンと非同期読み込み ( No.2 ) |
- 名前:管理人 日時:2015/03/17 00:39
ご情報&再現用のコードをアップしていただきありがとうございます
なるべく早く対応したいと思いますが、現在やるべきことがちょっと溜まっているので
次の週末中に完了できるかどうか・・・という状況です
申し訳ありませんが少しお時間をください m(_ _;m
|
Re: フルスクリーンと非同期読み込み ( No.3 ) |
- 名前:S.S. 日時:2015/03/17 05:21
他のスレッドを拝見しました。
なるほど大規模な変更ですか。
これはまた大変お忙しいときに返信ありがとうございます。
更新楽しみにしています。
|
Re: フルスクリーンと非同期読み込み ( No.4 ) |
- 名前:管理人 日時:2015/03/23 00:12
|
Re: フルスクリーンと非同期読み込み ( No.5 ) |
- 名前:S.S. 日時:2015/03/30 09:54
返信遅れて大変申し訳ありません!
ずっとリンクがクリック済みの表示になっていたので確認したと思い込み
最終更新の欄が管理人さんだということに気付きませんでした
まだ動作の確認をしていないので
動作確認後に(解決)をつけて書き込みたいと思います
|
Re: フルスクリーンと非同期読み込み ( No.6 ) |
- 名前:S.S. 日時:2015/03/30 13:32
とりあえず制作中のゲームで試したところ
同じ条件において、
今度はDxLib::DXGISwapChain_ResizeBuffersで
アクセス違反が発生しました。
短いコードでは試していないので
細かい条件はこれから調べてみたいと思います
|
Re: フルスクリーンと非同期読み込み ( No.7 ) |
- 名前:管理人 日時:2015/04/01 00:43
すみません、今度は私が「今日のS.S.さんの書き込みはもう確認したはず」と思って
No.6 のお書き込みを見落としていました orz
DxLib::DXGISwapChain_ResizeBuffers でのアクセス違反ですが、頂いたサンプルでは
私の環境では発生しませんでした
アクセス違反の引き金となりそうな箇所はあったのですが、そこを変更してエラーが
発生しないようになっても根本の原因は分からないままになってしまいそうなので、
大変お手数で申し訳ありませんが S.S.さんの検証を待たせていただきたいと思います m(_ _;m
|
Re: フルスクリーンと非同期読み込み ( No.8 ) |
- 名前:S.S. 日時:2015/04/01 01:36
この前アップしたコードにいろいろ付け足して試したところ
どうやらSetAlwaisRunFlug(TRUE)との併用で発生するようです
手元のwin8.1でしか試していないので
管理人さんのPCでも試していただけると幸いです
|
Re: フルスクリーンと非同期読み込み ( No.9 ) |
- 名前:管理人 日時:2015/04/04 21:41
|
Re: フルスクリーンと非同期読み込み ( No.10 ) |
- 名前:S.S. 日時:2015/04/05 00:18
試してみましたが、またまた違う場所で起こってしまいました...
スタックコールは以下の通りで
Direct3DSurface9_UnlockRect_ASyncCallbackで起こっています
KernelBase.dll!_RaiseException@16() 不明
msvcrt.dll!__purecall() 不明
⇒ DxLibTest.exe!DxLib::Direct3DSurface9_UnlockRect_ASyncCallback(struct DxLib::ASYNCLOAD_MAINTHREAD_REQUESTINFO *) C++
DxLibTest.exe!DxLib::ProcessASyncLoadRequestMainThread(void) C++
DxLibTest.exe!DxLib::NS_ProcessMessage(void) C++
DxLibTest.exe!DxLib::UpdateKeyboardInputState(int) C++
DxLibTest.exe!DxLib::CheckHitKey(int) C++
> DxLibTest.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstancem, char * lpCmdLine, int nCmdShow) 行 243 C++
DxLibTest.exe!__tmainCRTStartup() 行 251 C
DxLibTest.exe!WinMainCRTStartup() 行 165 C
kernel32.dll!@BaseThreadInitThunk@12() 不明
ntdll.dll!__RtlUserThreadStart() 不明
ntdll.dll!__RtlUserThreadStart@8() 不明
|
Re: フルスクリーンと非同期読み込み ( No.11 ) |
- 名前:S.S. 日時:2015/04/05 00:59
失礼しました
前回のエラーの原因は
お恥ずかしながら
参照するフォルダの更新を忘れていただけでした・・・
----------------------------------------------------------
同日04/05 01:00 追記
ところで、スクリーンが切り替わった直後のScreenFlipが失敗するのは
仕様なのでしょうか...?
|
Re: フルスクリーンと非同期読み込み ( No.12 ) |
- 名前:管理人 日時:2015/04/05 16:13
はい、仕様です
ソフトが非アクティブになってフルスクリーンモードから一旦デスクトップ画面に戻っている間に
描画関係の関数を使用した場合は、ScreenFlip に限らず全ての描画関係の関数が失敗します
( 描画に使用している API である Direct3D を一旦全て解放してしまっているので・・・ )
今回の修正で「読み込み関数が実行されている場合は読み込みが終了するまで非アクティブに
ならないようにする」ようにしたのと、本件以前から
SetAlwaysRunFlag( TRUE ) ;
を実行していない状態では色々な関数で「再びアクティブになるまで処理が止まる」ようになっているので
この仕様に触れる機会は少ないですが・・・
|
Re: フルスクリーンと非同期読み込み ( No.13 ) |
- 名前:S.S.(解決) 日時:2015/04/05 17:26
なるほど
SetAlwaysRunFlag( TRUE )には特にこだわりが有るわけではないので
非アクティブ時には止まるようにしたいと思います
大変お世話になりました
|