トップページ > 過去ログ > 記事閲覧
タスク切り替え復帰時に落ちる
名前:詩鳥 日時: 2010/03/07 15:13

こんばんは フルスクリーンで動作中にタスク切り替えでデスクトップに戻った後、復帰しようとすると一度暗くなってから、問題が発生したため終了、となってしまいます 他何台かのPCでは今のところ正常に動作しているみたいなので、OSかハード依存の問題かと思うのですがどうでしょうか Logファイルを見る限りハンドルの復元中に落ちてるみたいなのですが 見た限り特に怪しいものも見当たらず(気が付かずとも言う)、原因究明中です どなたか同じ症状や解決策案、原因の心当たりなどがあれば伺いたく書き込ませていただきました 正常に表示されないとかならまだしも、いきなり落ちちゃうので悪戦苦闘しています><; ソースの中身としては、起動中にフルスクリーンとウィンドウの切り替えができたり、描画可能バッファ領域などを使用していたりしています バッファ領域に関してはMakeGraphなどしなくても落ちるようです 当方で正常に動作しなかった環境は 自作デスク Windows7 64bit Radeon GTX260 コンパイラ BCC ライブラリ Ver3.01aです 他には自作XP Pro SP3、2kでは正常に動作しました 以下復帰失敗時のLogファイルです よろしくお願いします 0:システムの情報を出力します 0: DXライブラリ Ver3.01a 0: OS Windows7 ( Build 7600 ) 100: CPU動作速度:大体2.57GHz 100: MMX命令を使用します 100: SSE命令が使用可能です 100: SSE2命令が使用可能です 100: CPUベンダ:GenuineIntel 100: CPU名:Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz 100:COMの初期化... 成功しました 101:メモリ総量:4087.05MB 空きメモリ領域:2460.86MB 101:タイマーの精度を検査します 101:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 101: パフォーマンスカウンターを使用します タイマー分解能 : 2742.900000 KHz 102: ソフトの二重起動検査... 二重起動はされていませんでした 102:ウインドウクラスを登録します... 登録に成功しました 102:ウインドウモード起動用のウインドウを作成します 104:ウインドウの作成に成功しました 124:IMEを無効にしました 325:ウインドウスタイルをウインドウモード用に変更します... 完了 325:DirectInput関係初期化処理 325: DirectInput7 の取得中... 成功 331: 引き続き初期化処理... 初期化成功 331: ジョイパッドの初期化... 336: 入力装置を見つけました 336: デバイスの登録名:JC-PS102U 337: デバイスの製品登録名:JC-PS102U 337: 周期的エフェクトの作成に失敗しました。 337: ジョイパッドの追加は正常に終了しました 337: ジョイパッドの初期化は正常に終了しました 337: マウスデバイスの初期化... 初期化成功 337: キーボードデバイスの初期化... 初期化成功 338:DirectInput 関連の初期化は正常に終了しました 338:DirectSound の初期化を行います 338:DirectSound インターフェースの取得を行います.... 成功 339:引き続きインターフェースの初期化処理... 成功 363: DirectSound デバイスを列挙します 363: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 363: モジュール名:{0.0.0.00000000}.{620521c8-ac69-4037-861c-47c36803b10e} ドライバ記述:Digital Output Device (HDMI TX0) (VIA High Definition Audio) 363: モジュール名:{0.0.0.00000000}.{92a44ce0-b3d2-428f-813a-7ebbe255c45b} ドライバ記述:スピーカー (VIA High Definition Audio) 363: モジュール名:{0.0.0.00000000}.{9db42a57-0a81-40a4-a2c5-7991c5d1bd44} ドライバ記述:SPDIF Interface (TX1) (VIA High Definition Audio) 363: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 363: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 363: 利用可能サンプリング精度 364: プライマリ 16bit = OK 8bit = OK 364: セカンダリ 16bit = OK 8bit = OK 364: 利用可能チャンネル 364: プライマリ MONO = OK STEREO = OK 364: セカンダリ MONO = OK STEREO = OK 364:DirectSound の初期化は正常に終了しました 365:DirectDraw オブジェクトの取得を行います.... 成功 366:引き続き初期化処理... 初期化に成功しました 403:IDirect3D9 オブジェクトを取得します.... 成功 405:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 473:成功 473:Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 260 473:画面のフォーマットは D3DFMT_X8R8G8B8 です 473:Zバッファのフォーマットは D3DFMT_D16 です 473:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 474:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 474:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 474:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 474:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 474:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 474:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 474:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 474:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 474:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 474:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 474:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 474:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 474:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 474:Zバッファを作成します.... 成功 482:プログラマブルシェーダーを使用します 485:フォントの初期化を行います 485:フォントの初期化は正常に終了しました 485:文字コードバッファの初期化を行います... 完了しました 4578:画面モード変更処理を開始します 4600: DirectDraw オブジェクトの取得を行います.... 成功 4600: 引き続き初期化処理... 初期化に成功しました 4634: IDirect3D9 オブジェクトを取得します.... 成功 4636: IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 4691: 成功 4691: Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 260 4691: 画面のフォーマットは D3DFMT_X8R8G8B8 です 4691: Zバッファのフォーマットは D3DFMT_D16 です 4691: 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 4691: 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 4691: アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 4692: アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 4692: アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 4692: アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 4692: DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 4692: DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 4692: DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 4692: DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 4692: DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 4692: 描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 4692: 描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 4692: 描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 4692: Zバッファを作成します.... 成功 4693: プログラマブルシェーダーを使用します 4724: グラフィックを復帰します 4808: ウインドウスタイルをウインドウモード用に変更します... 完了 4810:画面モード変更処理は正常に終了しました 4810:ChangeWindowMode実行 4810:ウインドウモードフラグが倒されました 4810:ウインドウスタイルをフルスクリーンモード用に変更します... 完了 4812:画面モード変更処理を開始します 4931: DirectDraw オブジェクトの取得を行います.... 成功 4931: 引き続き初期化処理... 初期化に成功しました 4965: IDirect3D9 オブジェクトを取得します.... 成功 4967: IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 5707: 成功 5708: Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 260 5708: 画面のフォーマットは D3DFMT_X8R8G8B8 です 5708: Zバッファのフォーマットは D3DFMT_D16 です 5708: 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 5708: 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 5708: アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 5708: アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 5709: アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 5709: アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 5709: DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 5709: DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 5709: DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 5709: DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 5709: DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 5709: 描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 5709: 描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 5709: 描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 5709: Zバッファを作成します.... 成功 5711: プログラマブルシェーダーを使用します 5713: グラフィックを復帰します 5783:画面モード変更処理は正常に終了しました 14228:DirectInput 関連の終了処理... 完了 14230:DirectDraw オブジェクトの取得を行います.... 成功 14230:引き続き初期化処理... 初期化に成功しました 14282:IDirect3D9 オブジェクトを取得します.... 成功 14285:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 14986:成功 14987:Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 260 14987:画面のフォーマットは D3DFMT_X8R8G8B8 です 14987:Zバッファのフォーマットは D3DFMT_D16 です 14987:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 14987:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 14987:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 14987:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 14987:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 14987:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 14987:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 14987:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 14987:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 14987:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 14988:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 14988:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 14988:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 14988:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 14988:Zバッファを作成します.... 成功 14990:プログラマブルシェーダーを使用します 15000:グラフィックを復帰します

Page: 1 |

Re: タスク切り替え復帰時に落ちる ( No.1 )
名前:詩鳥 日時:2010/03/09 00:18

すみません、 もういくつかお聞きしたいことがあるのですが、 標準マウスカーソルと、カーソル位置を取得して描画したグラフィックカーソルとで動作を比較すると、 どうもグラフィックカーソルが標準カーソルを追っかけるような感じで遅れて表示されているみたいなのですが、これは仕様なのでしょうか? 以下サンプルソースです 環境は↑と同じで、他の環境でも発生しているみたいです #include"DxLib.h" char keybuf[256]; int cursor_x,cursor_y; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){ ChangeWindowMode(TRUE); if(DxLib_Init()==-1){ return -1; } SetDrawScreen(DX_SCREEN_BACK); int cursor_hundle = LoadGraph("IMG\\cursor.png"); while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(keybuf)==0){ if(keybuf[KEY_INPUT_ESCAPE]==1){ break; } GetMousePoint(&cursor_x,&cursor_y); DrawGraph(cursor_x,cursor_y,cursor_hundle,TRUE); ScreenFlip(); } DxLib_End(); return 0; } もうひとつは 先日追加された SetChangeScreenModeGraphicsSystemResetFlag 関数を早速使用させて頂いているのですが、 フルスクリーンで標準カーソルを非表示にしているときにウィンドウモードに切り替えると、 標準カーソルが表示されるみたいです 解像度変更やウィンドウモード切替で初期化される設定の中にSetMouseDispFlagが含まれるのかわからないのですが、 再度設定するものなのでしょうか? もしソースのミスなどがありましたらご指摘くださると助かります 重ね重ねよろしくお願いいたします m(_ _)m 以下サンプルです #include"DxLib.h" char keybuf[256]; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){ SetMouseDispFlag( FALSE ); ChangeWindowMode(FALSE); if(DxLib_Init()==-1)return -1; SetDrawScreen(DX_SCREEN_BACK); SetChangeScreenModeGraphicsSystemResetFlag(FALSE) ChangeWindowMode(TRUE); while( GetHitKeyStateAll(keybuf)==0){ if(keybuf[KEY_INPUT_ESCAPE]==1)break; ScreenFlip(); } DxLib_End(); return 0; }
Re: タスク切り替え復帰時に落ちる ( No.2 )
名前:管理人 日時:2010/03/15 23:41

ご報告ありがとうございます 私も Windows7 64bit の環境があるので試してみたのですが、 必ずエラーが発生するというわけでは無いのか、再現しませんでした 必ず発生するということでしたら私の環境で直接確認できた方が修正も すぐに済みますので、もし不都合がありませんでしたら件の現象が発生する プロジェクトを圧縮してメールで送って頂けないでしょうか? 標準カーソルと描画するカーソルの表示タイミングのの違いですが、 GetMousePoint を使用して座標を読み取ったときには既に画面上のマウスカーソルはその座標にあるわけですが(多分)、 その時点でマウスの座標に画像を描画しても、その描画結果が画面上に反映されるのはその後 ScreenFlip を呼んだ後になります となると、どうしてもその分自前で描画するマウスカーソルの位置は標準カーソルよりも遅れることになります また、Windows Vista 以降のOSで Aero を有効にした場合は、各ソフトでの描画結果が画面上のウインドウに 反映されるまでの時間が長くなったという情報もありますので、その影響もあるかもしれません ChangeWindowMode 後に標準カーソルの表示設定が変更されるのは以前からで、標準カーソルの表示・非表示の設定は SetChangeScreenModeGraphicsSystemResetFlag の設定とは関係なく、常にウインドウモードに変更されたときは表示状態に、 フルスクリーンモードになったときは非表示状態になります なので、ChangeWindowMode を実行した後に再度 SetMouseDispFlag で表示状態を再設定してやってください
Re: タスク切り替え復帰時に落ちる ( No.3 )
名前:詩鳥 日時:2010/03/16 12:32

すみません、せっかくご連絡頂いたのに再度試してみたらタスク切り替え落ちの症状が再現できなくなったみたいです、、 この前は100%失敗する感じだったのに、 ともあれなんとか大丈夫?そうです カーソル表示・非表示の件了解しました カーソル遅延なのですが、位置取得後同ループ内で描画とやってるので 遅れたとしても1フレーム分だけかと思うのですが、標準カーソルをいきなり停止した場合も ひゅーんと滑らかについてくる感じなのでどうなんだろう?と思った次第でした 目の錯覚と言われたらそれまでなんですケド、w なにはともあれ、お忙しい中ありがとうございました><!

Page: 1 |