Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.1 ) |
- 名前:あっぷる 日時:2025/05/21 07:56
ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3129
こちらを参考に
SetUseASyncLoadFlag(TRUE);
fhandle = FileRead_fullyLoad(m_PicPath.c_str());
SetUseASyncLoadFlag(FALSE);
を使用しても、Windowsでは表示されて、androidでは表示しませんでした
どちらのケースでもhandleは取れていました
|
Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.2 ) |
- 名前:管理人 日時:2025/05/21 21:49
載せていただいたスレッドでも書いていますが、DXライブラリの各関数はスレッドフリーではありませんので、
基本的に DxLib_Init() を呼んだスレッド以外のスレッドからDXライブラリの関数を呼んだ場合の動作は保証していません
なので、Windows上では別スレッドでも問題なく画像が読み込めたというのは私の想定していない状況で
たまたま運良く問題なく画像が読み込めているのだと思います
なので Android では別スレッドでは正常に読み込めないのは寧ろ仕様の通りとなります m(_ _;m
> ロード処理などはできればスレッド内で行いたいのです。
すみません、前述の通りDXライブラリの関数はスレッドフリーではありませんので、
メインスレッド以外のスレッドからの関数呼び出しには対応していません m(_ _;m
ロード中に処理をブロックしたくない、等の用途でしたら SetUseASyncLoadFlag という関数を使用することで
非同期読み込みを行えます
<関数リファレンス SetUseASyncLoadFlag>
https://dxlib.xsrv.jp/function/dxfunc_other.html#R21N1
|
Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.3 ) |
- 名前:あっぷる 自己解決 日時:2025/05/22 08:36
ご回答ありがとうございます
もろもろ理解できました
つまりライブラリの関数は別スレッドから呼ばないように調整する必要があるのですね
windowsではたまたま動いたので勘違いしておりました
メインスレッドから
非同期設定してファイルを読み込んだあと、
別スレッドにて一定時間毎にメインスレッドにメッセージを送り、
メインスレッドが、メッセージ受け取ったらGetASyncLoadNumで
ロードが終わったか調べて次に進むような調整をしたいと思います
ありがとうございました!
助かりました
|