- 1 名前:デフォルトの名無しさん mailto:sage [04/09/24 15:07:03]
- BREW(Binary Runtime Environment for Wireless)についてのスレ
QUALCOMM BREWホーム www.qualcomm.com/brew/ja/ www.qualcomm.com/brew/ BREW JAPAN .COM|BREW増強計画 www.brewjapan.com/ 前スレ pc5.2ch.net/test/read.cgi/tech/1076511398/ 関連情報>>2-18 ■過去スレ 02 pc5.2ch.net/test/read.cgi/tech/1076511398/ 01 pc2.2ch.net/test/read.cgi/tech/1011078904/
- 75 名前:949 [04/10/05 14:12:49]
- 質問が御座います。
今朝端末でアプリを立ち上げた所、 「エラーが発生しました(004)」と表示され、 製作中の全てのアプリで同じ現象が 発生している状態です。(⊃△T) ※昨日まで動作していました エラー004の内容についてお知りの方、 助言していただけないでしょうか?
- 76 名前:デフォルトの名無しさん mailto:sage [04/10/05 14:21:56]
- >>75
SIGファイルの期限切れ
- 77 名前:75 [04/10/05 14:30:33]
- >SIGファイルの期限切れ
(゚△゚;) クライアント様に新しいの用意して もらいまふ…。_| ̄|○||| >>76 早急なレスありがとうございました。
- 78 名前:デフォルトの名無しさん mailto:sage [04/10/05 16:14:22]
- _| ̄|〇.oO( IBITMAP_Release2回やらんとメモリ解放されない・・・・)
原因が解かりません。 まさか仕様って訳じゃ無いですよ・・・ね? 一応解放されるけどなんか気持ち悪いです。 どなたか解決法知ってましたら助けてくださぃ。
- 79 名前:78 mailto:sage [04/10/05 16:24:52]
- 自己解決しました。
2次配列で取得してました(;´Д⊂)
- 80 名前:デフォルトの名無しさん mailto:sage [04/10/05 17:36:48]
- >>77
SIGは3ヶ月で切れるから気をつけれ
- 81 名前:デフォルトの名無しさん mailto:sage [04/10/06 14:26:42]
- 前スレでGCCでのビルドについて質問した者です。
makefileアップしてもらってもうまく行かずに悩んでいたが、>>76ではたと気づいたよ。 sig作り直したらうまく行きました(;°д°) ついでにC++でもHelloWorldレベルでの確認までできたのでフォーラムのほうにアップしますた。 ttp://brewforums.qualcomm.com/ja/showthread.php?s=&threadid=97 みんなありがとう!(^^)!
- 82 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:49:26]
- 武龍で強制的にスリープさせる方法なんてあんのかね?
- 83 名前:デフォルトの名無しさん mailto:sage [04/10/07 01:17:05]
- >>81
お〜ま〜え〜は〜ア〜ホ〜か〜 まあ、実際良くあることだけどな
- 84 名前:デフォルトの名無しさん mailto:sage [04/10/07 11:27:20]
- BREWで動く関数ポインタの使い方を教えていただけませんか?
下のに書いた感じで、エミュでは問題なく動いてるんですが、 armコンパイルするとエラーが(⊃д⊂) switch caseや if else 多用すれば良いとも言うけど… //キーイベントが発生したら、本関数をコール KeyEvent(AEEApplet *a, uint16 wParam) { void (*key[])(AEEApplet*, uint16)={ KeyEvent_0, //0 KeyEvent_1, //1 KeyEvent_2, //2 … }; //共通処理 key[a->JumpNo]; //各関数へジャンプ }; void KyeEvent_0(AEEApplet *a, uint16 wParam) { //個別処理 } void KyeEvent_1(AEEApplet *a, uint16 wParam) { //個別処理 } //以下略
- 85 名前:デフォルトの名無しさん mailto:sage [04/10/07 22:23:24]
- リンク時にはまだ関数のアドレスが確定してないから、変数の初期値として
関数のアドレスは指定できないよ。 実行しはじめてからでないと。
- 86 名前:84 mailto:sage [04/10/08 00:14:02]
- なるほど…
つまるところ関数ポインタをメンバ構造体へ突っ込んどいて、 動的に初期化すればOKて事ですか・・? うーん、そこまでやるならif elseでズラズラ書いた方が良いかなぁ… ひとまずやってみます。ありがとうございました。
- 87 名前:デフォルトの名無しさん mailto:sage [04/10/08 07:13:45]
- >>85
それじゃぁ呼び出しもできないね。 >>86 「なるほど」じゃねぇだろ。
- 88 名前:84 mailto:sage [04/10/08 08:52:35]
- armコンパイル時にリンクでエラーが出てたと思ったので、
納得してしまったんでつが… じゃぁどーすりゃいいんだyp!ヽ(`Д´)ノ
- 89 名前:デフォルトの名無しさん mailto:sage [04/10/08 08:55:28]
- >>88
「思った」ってなんだよ? エラーでたならエラーメッセージ貼って質問するのが基本なわけだが、できないのか?
- 90 名前:デフォルトの名無しさん mailto:sage [04/10/08 09:11:51]
- >>84
>key[a->JumpNo]; //各関数へジャンプ これに引数は書かないのか? (*key[a->JumpNo])(a, wParam); ではダメ? ちなみに関数ポインタは実機でも使えるよ。 リンクも通るし、できた mod もちゃんと動く。 ただ、前の開発では配列にしたら何故かダメだった。 調べるのもめんどくさいので switch で切り分けた (´A`)
- 91 名前:デフォルトの名無しさん mailto:sage [04/10/08 10:14:34]
- グローバルなポインタの配列?は出来ないくさい。
テーブルのテーブルとかすると叱られた。
- 92 名前:デフォルトの名無しさん mailto:sage [04/10/08 10:59:39]
- なんかBREWの仕様もさながら
ARMコンパイラが腐ってるのが苦労の原因に見える……外から見てると
- 93 名前:デフォルトの名無しさん [04/10/08 11:56:36]
- 質問です。
通信処理を行った後、少しの間動作が遅くなる といった現象が起きているのです。 どうもIWEB_GetResponse使った時点から 遅くなってる様なのですが、 同じ様な現象が起こった方アドバイスいただけませんか? ちなみにソースはこんな感じ↓ venus.aez.jp/uploda/dat/upload10830.txt SDKのサンプル元にしてます。 よろしくお願い致します。
- 94 名前:デフォルトの名無しさん mailto:sage [04/10/08 15:09:39]
- >>93
とりあえず、ぱっと見の突込み所(遅くなる原因かはわからないけど) なんでデータ受信時の再読み込み系でCALLBACK_Initを 何回もやっているの?必要だっけか? たまにしかアクセス行かないアプリなら別だけど IWebをリクエスト毎に生成するのは何故? IWebは基本的に使いまわすもの
- 95 名前:デフォルトの名無しさん mailto:sage [04/10/08 17:18:38]
- >>94
CALLBACK_Initについてはコールバック設定前に行うっていうのはどっかに書いてあったはず・・・。 あとIWebについてだけど あれって使いまわせないと思うんだが? IWebはIWEB_Releaseを行わないと切断できないし。 ついでに>>93については分からないなぁ・・・。 俺のときはメモリを細かく取ってたら遅くなったけど。
- 96 名前:デフォルトの名無しさん mailto:sage [04/10/09 00:41:23]
- >>91
constつけてないだろ。
- 97 名前:デフォルトの名無しさん mailto:sage [04/10/09 23:48:57]
- ラボで貸してくれるという評価ボードって何ができるの?
ICEつなげてソースデバッグとかできるとありがたいんだが・・・・
- 98 名前:デフォルトの名無しさん mailto:sage [04/10/11 12:26:02]
- MSのeMbedded VC++4.0でBREW用バイナリは出来ないのかなぁ・・・。
- 99 名前:デフォルトの名無しさん mailto:sage [04/10/12 19:13:16]
- J2Bトランスレータってどうしたんでしょうね。
10月から始まるって話でしたよね。
- 100 名前:デフォルトの名無しさん mailto:sage [04/10/12 20:11:31]
- Javaに詳しいトランスレーター用の中の人が思ったより集まらなかったのでは?
どうせ家内製手工業だろうし
- 101 名前:デフォルトの名無しさん mailto:sage [04/10/13 00:47:01]
- 十数秒で変換って書いてあるから、手作業はほとんどないと思いますが、
やっぱりあんまり期待できないですね。
- 102 名前:デフォルトの名無しさん mailto:sage [04/10/13 01:20:38]
- BREW開発セミナー
www.staffnet.co.jp/BREWseminar/
- 103 名前:デフォルトの名無しさん [04/10/15 09:18:35]
- ぶりゅっ
- 104 名前:デフォルトの名無しさん [04/10/15 14:46:41]
- はじめまして。
質問なのですが、機種ごとに違う、画面の大きさを取得できる関数が あったとおもうのですが。。なんでしたっけ。 それと、横幅は240で固定なのでしょうか。縦は違う??
- 105 名前:デフォルトの名無しさん mailto:sage [04/10/15 15:24:27]
- >>104
画面の大きさはISHELL_GetDeviceInfoで取得したAEEDeviceInfo構造体に入ってる。 これで機種ごとにサイズを見てみれ。
- 106 名前:93 [04/10/16 21:30:20]
- >>94,95
レスありがとうございます。 試行錯誤しておりますが、現状直らず…。_| ̄|○||| 現状わかった事として 通信終了後(成功失敗に関わらず)、 約1分程で動作速度が元に戻る。(T△T;) CallBack、タイムアウトのタイマーは開放してるんで、 それ系の不具合では無いと思うのですが…。 引き続き情報お待ちしております…。m(_ _)m
- 107 名前:デフォルトの名無しさん mailto:sage [04/10/16 21:49:15]
- 通信とは関係ないけど、
BREWエミュで文字列リソースだけ読ませるだけの アプリ作って起動したらやたらとフレームが落ちて重くなったことがあった。 そこで画像も読ませたりすると普通の速度に戻ったりとか。 原因は不明・・スマン
- 108 名前:デフォルトの名無しさん mailto:sage [04/10/16 22:19:16]
- >>108
>約1分程で動作速度が元に戻る。(T△T;) 見事に自動切断(っていうのか?)の時間レスね なんか解放し忘れてんのかね
- 109 名前:デフォルトの名無しさん mailto:sage [04/10/18 06:45:07]
- ところでenraタソはどこ行きましたか?
- 110 名前:デフォルトの名無しさん mailto:sage [04/10/18 23:57:34]
- pngをメモリから読めますか?APIが見つかりません。
- 111 名前:デフォルトの名無しさん mailto:sage [04/10/19 10:36:37]
- >>110
メモリから読むなら、IMemAStream -> IAStream でIIMAGEにストリーム設定すればいけんでない?
- 112 名前:デフォルトの名無しさん [04/10/19 12:38:15]
- JavaとBREW:
混同してはならない2つの技術の性格 www.mainichi-msn.co.jp/it/coverstory/news/20041018org00m300052000c.html ■■将来は「Java on BREW」か
- 113 名前:110 mailto:sage [04/10/19 20:57:46]
- >>111 できました。ありがとうございます。
- 114 名前:デフォルトの名無しさん mailto:sage [04/10/19 23:42:12]
- とりあえずンニーでカメラ動かそうとすると大変だな
ところでカメラエンコードが失敗したときって何で判定すんの?
- 115 名前:デフォルトの名無しさん [04/10/20 13:04:42]
- >114
よくわからんけど、戻り値を調べるなりできたファイルをチェックするなりすればいいんでは?
- 116 名前:デフォルトの名無しさん mailto:sage [04/10/20 18:56:17]
- エミュレータのソフトキーはキーボードから操作できないのでしょうか。
[*]キーはテンキーの'*' [#]キーはテンキーの'.' [クリア]キーはBS [電源]キーはESC に対応してました。
- 117 名前:デフォルトの名無しさん [04/10/21 18:02:00]
- HTTP接続した後、1分ぐらい別の作業(画面更新とか)したあとに
再度HTTP接続すると、毎回Response code -1200とか返るんですが これはエミュだから?実機でもそう?もしくはサーバー?
- 118 名前:デフォルトの名無しさん [04/10/21 19:02:04]
- ファイルの読み書きなんですけど、
実機ではうまく動いているのにシミュレータでは IFile_Writeの戻り値が0になってしまいます。 どぉすればいいですかね? ちなみにIFILEMGR_GetLastErrorの戻り値はEFSFULLでした。 ファイルシステムに空きがないという事だったのですが、どういう意味でしょうか? またこの場合、どのように対処すればいいのでしょうか?
- 119 名前:デフォルトの名無しさん mailto:sage [04/10/21 19:12:49]
- >>118
brewforums.qualcomm.com/ja/showthread.php?s=&threadid=74
- 120 名前:デフォルトの名無しさん mailto:sage [04/10/21 22:54:14]
- 1ヶ月も前の話になるけど、ゲームショウで
BREWのゲームって出てなかったよな。 KDDIのブースでもマルチマッチングのPS2のゲームがあっただけだし…
- 121 名前:118 [04/10/22 10:18:23]
- >>119
有難うございました!無事解決しました。
- 122 名前:デフォルトの名無しさん [04/10/22 10:42:12]
- 先日BREWをはじめました。
CGI連携について教えてください。 IWebインターフェイスでCGIに連携する時 仕様書のサンプルのようにGetLineで取得すると、テキストデータ以外がとれません。 バイナリ-データを取得するにはどうすればよいのでしょうか? GetLineでは取れないのでしょうか?
- 123 名前:デフォルトの名無しさん mailto:sage [04/10/22 11:11:12]
- >>122
ISOURCE_Read WebRespInfoのpisMessageはISource のインスタンスだべ サンプルにあったような・・
- 124 名前:デフォルトの名無しさん mailto:sage [04/10/22 11:32:06]
- ありゃ、漏れIPEEK_Read()でやってたよ>バイナリの読み込み
まぁ動いてるからいいんかな・・・
- 125 名前:122 [04/10/22 12:53:34]
- う〜ん、うまくとれませんorz
CGIから Print"abc"; なら取れるのに、 print pack("c", $status); だと とれません... なにか必要な設定などありますか?
- 126 名前:デフォルトの名無しさん mailto:sage [04/10/22 13:24:49]
- >>125
HTTPヘッダとボディのデータを一度モニタした方が 良いんでは?
- 127 名前:123 mailto:sage [04/10/22 14:02:35]
- >>125
ごめん。ファイルリソース取得はそれでOK だったけど、昔cgiでバイナリ出力したときは 漏れもエラーになってた気がする orz BREW側のHTTPヘッダの解析でまずいことでもして るのかね? 公式で聞いた方がいいかも
- 128 名前:デフォルトの名無しさん [04/10/24 01:05:29]
- BREWプログラミング実践バイブル
のサンプルプログラムなんですが、エミュレータで動作確認はできないんですかね? やっぱりdllファイルがないとだめですよね。dllファイルを作るまでの知識がないもんで・・
- 129 名前:デフォルトの名無しさん mailto:sage [04/10/24 01:36:07]
- 何がしたいのかはよくわからないけど、
アプリが無いとエミュレータで動作確認はできないねぇ・・・ そういえば、開発者で実戦バイブル買った人っているのかな?
- 130 名前:デフォルトの名無しさん [04/10/25 01:20:04]
- >>129
サンプルをDLしたんですけど、エミュレータで確認したいんですよぉ。 ・゜゜・(≧д≦)・゜゜・。エーン!! DLしたファイルの中にはmif、bid、ソースファイルなどはあるのですが、dllだけないんです。 vc++でコンパイルしてdllを生成するまでの手順がわからないので、困っています。 sdk ver2.1を使っています。 どなたか教えてください。
- 131 名前:デフォルトの名無しさん mailto:sage [04/10/25 01:50:02]
- ARMコンパイラーはあるんですか?
自分もサンプルをエミュで動かしてみたいんですが、 ARMコンパイラーないし、Visual Studioもないし‥。 開発だけなら無料でできるって聞いたのに・・・。orz
- 132 名前:デフォルトの名無しさん mailto:sage [04/10/25 04:09:19]
- >>130
dllの作り方はBREWと関係なしにVC++のマニュアルとか検索で調べるとか。 >>131 エミュレータで動かすならARMコンパイラは不要。 VisualStudioでなくてもVisualC++.NETでも可。Cのソースからdllが作成できればいい。 無料でできるのはBREW SDKのインストール。
- 133 名前:131 mailto:sage [04/10/25 05:45:31]
- >>132
すいません。根本的なところで勘違いしてたみたいですね。 ありがとうございました。やってみます。
- 134 名前:デフォルトの名無しさん mailto:sage [04/10/25 06:05:58]
- >>132
ちゃんと動きました!ありがとうございました!
- 135 名前:デフォルトの名無しさん [04/10/25 11:13:26]
- >>134
エミュレータで、確認できたんですか?やっぱりdllを生成してですか?
- 136 名前:131 mailto:sage [04/10/25 11:45:15]
- エミュで確認できましたよ。dll作りました。
FakeRPGのdllのサイズ400kbもありますけどね。
- 137 名前:デフォルトの名無しさん mailto:sage [04/10/25 11:46:50]
- 「BREWプログラミング実践バイブル」にSDKのインストール方法から、
VC++を使ってdllの作成方法にエミュの起動方法まで載ってるのに、 喪前は一体何を聞きたいんだ?
- 138 名前:デフォルトの名無しさん [04/10/25 14:03:36]
- BREWにて
Graphics2.setRenderMode() みたいなことができる関数ってあるんでしょうか? javaアプリの移植は、結構大変ですねぇ
- 139 名前:デフォルトの名無しさん [04/10/25 16:32:49]
- BREWアプリのプログラム領域とデータ領域ってどのくらいの大きさなんですか?
ググってもそれらしき情報が見当たりません・・ DLできる最大のデータ量が600KBみたいな事は書いてあったんですが。
- 140 名前:デフォルトの名無しさん mailto:sage [04/10/25 16:52:57]
- >>139
600KBってのはCDMA 1X WINのみ。 それでQVGAの機種が300KBだっけ? その他はどうだったか忘れた。
- 141 名前:デフォルトの名無しさん mailto:sage [04/10/25 17:15:14]
- >>139
端末仕様書とかはKDDIのConfidential扱いだから ググっても見つからないかも。
- 142 名前:デフォルトの名無しさん mailto:sage [04/10/25 19:41:59]
- >>137
たぶん、本を買ったんじゃなくて、 ネットで公開されてるサンプルプログラムだけを落とした方だと思います。 自分もそうなので。
- 143 名前:デフォルトの名無しさん mailto:sage [04/10/25 21:41:48]
- 半透明ってできないの?
JAVAのPhase3の時はスプライトで半透明をつかってフェードしたので 同じことやろうと思って調べてんだけど・・・ ISpriteにもないみたい・・・ だれかヒントください
- 144 名前:デフォルトの名無しさん mailto:sage [04/10/26 00:30:25]
- 残念ながら、半透明は非サポート。
将来的にサポートが予定されているんだっけかな・・? どうしてもやりたいなら、DIB直接弄るしかないんでないの?
- 145 名前:デフォルトの名無しさん mailto:sage [04/10/26 00:47:35]
- 最近アホが多いな
- 146 名前:デフォルトの名無しさん mailto:sage [04/10/26 12:08:31]
- とりあえずソースを複数に分けるときってどんな風にやってる?
グローバル変数が使えないから従来のCの様な分け方できないもんな
- 147 名前:デフォルトの名無しさん [04/10/26 13:17:53]
- >>139
BREWはmodファイルもヒープに格納される。 だから、プログラムで使用するヒープ容量とmodサイズがヒープ容量を超えないようにする。 ちなみに、フレームワークでもヒープを消費するようで起動時点で端末によって使用済みヒープ容量が結構違う。 この辺は実機で確認していくしかないでしょ。 #端末のヒープ容量はCP登録していれば一部をQのデベロッパーサイトから見れる #載っていないやつはメーカに問い合わせろとか書いてある ファイルシステム上のサイズのことなら、BREW上での制限は特に無い。 容量使えるだけ使える。 ただ、キャリアのガイドラインがあるから>>140の言っているような制限がある。 KDDIの制限ならKDDIのサイトに詳しい資料があるね。ちょっと古いけど。 >>146 普通のCでもグローバル変数ばしばし使っているようじゃスパゲッティーになるわけだが。 BREWの場合はIApplet構造体をグローバルのように使うのが常道。 #定期的にカーネルへ処理を戻さないといけないから恒常的にデータを保存できるのはここだけ 漏れはC++のフレームワーク作っちゃって、メインクラスのメンバでデータ保存してるけどね。
- 148 名前:143 mailto:sage [04/10/26 21:31:30]
- >>144
thx IDIBでやってみる…
- 149 名前:デフォルトの名無しさん [04/10/27 11:07:38]
- >>136
>FakeRPGのdllのサイズ400kbもありますけどね。 工エェ!!!
- 150 名前:143 mailto:sage [04/10/27 22:38:24]
- bてビットかなぁ
- 151 名前:デフォルトの名無しさん mailto:sage [04/10/27 22:38:58]
- しまった名前が残ってた
これでよし
- 152 名前:デフォルトの名無しさん mailto:sage [04/10/27 23:39:30]
- でもとりあえずBREWはお糞さまだよな(挨拶)
- 153 名前:デフォルトの名無しさん mailto:sage [04/10/28 03:00:09]
- >>149
何も考えずに突っ込んでそのままビルドしたらそうなりました。
- 154 名前:デフォルトの名無しさん mailto:sage [04/10/28 04:11:35]
- dllはエミュレータ用で、これはでかくなるよ。数百KBytesとか普通。
実機用には別にコンパイルしたモジュールを使う。それはdllより遙かに小さくなる。
- 155 名前:デフォルトの名無しさん mailto:sage [04/10/28 05:07:03]
- 勉強になりました。
実機のエミュ出て欲しいですね。 出ても金取りそうだけど・・。
- 156 名前:デフォルトの名無しさん mailto:sage [04/10/28 08:33:55]
- 最近初心者質問スレと化して来たなぁ・・・
>>155 とりあえずCP契約すれば、エミュレータ用のデバイスファイルは一通り手に入る。 それが嫌ならエミュレータについてるデバイスコンフィギュレータで作るって手もあったと思った。
- 157 名前:デフォルトの名無しさん mailto:sage [04/10/28 10:56:58]
- >実機(用コードが動く)エミュ
無理。 つか、作ったとしても全く意味ないし。
- 158 名前:デフォルトの名無しさん [04/10/28 11:03:09]
- SDKダウンロードしてたらエラーでとまった。
サーバのメンテナンスで打ち切られたようだ。 sdjkgsd@ふじこs
- 159 名前:デフォルトの名無しさん mailto:sage [04/10/28 13:20:56]
- ふじこの作り方さえ満足に出来ないなんて…終わっとるなw
- 160 名前:デフォルトの名無しさん mailto:sage [04/10/28 18:27:59]
- spfファイルをbarに放り込んでリソースからphraseを使ってるんだけど、
AEEMediaData.pDataをFREEで開放しようとしたら duplicate free 〜〜〜 と メモリを二重開放していると怒られました。 やり方は BREWJAPAN.comのTechnicalTipsに載ってた方法を参考にしたんですが・・・ かといって開放しないとメモリリークになるし、もうどうしたらいいかわかりません(´Д⊂、
- 161 名前:デフォルトの名無しさん mailto:sage [04/10/28 21:24:12]
- 音の開放のときってbrewのバージョン(2.0とか2.1とか)で違うって
そのTipsのに載ってなかったっけ?バージョン書いたほうがいいよ
- 162 名前:160 mailto:sage [04/10/28 22:31:15]
- バージョンは2.1です。書き忘れてました
- 163 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:59:32]
- >>160
俺はお前を知っている。
- 164 名前:デフォルトの名無しさん mailto:sage [04/10/29 15:27:26]
- このTipに書いてあるのはIMediaインターフェースの開放に関する事ですよね。(23.3)
俺が言いたいのはそれの事じゃないです。 とりあえず読込・MediaDataのセット・開放の部分のソース晒してみます。 /*アプレット構造体 */ typedef struct _App{ AEEApplet a; IMedia* media[3]; AEEMediaData mdata[25]; }App /* IMediaインターフェースの作成 */ for(j = 0; j < 3; j++){ i = ISHELL_CreateInstance(shell, AEECLSID_MEDIAPHR, (void*)&app->media[j]); if(app->media == NULL){ DBGPRINTF("failed"); } } /* リソースファイルからのspfファイルの読込 */ for(k = 0; k < 25; k++){ ISHELL_LoadResDataEx(app->a.m_pIShell, RES_FILE, SE_1 + k, RESTYPE_IMAGE, (void*)-1, &dwSize); buf = ISHELL_LoadResData(app->a.m_pIShell, RES_FILE, SE_1 + k, RESTYPE_IMAGE); offset = (uint32)buf[0]; dwSize = dwSize - offset; app->mdata[k].clsData = MMD_BUFFER; app->mdata[k].pData = buf + offset; app->mdata[k].dwSize = dwSize; }
- 165 名前:160 mailto:sage [04/10/29 15:37:18]
- /* メディアデータのセット
再生する音によってセットするデータの数が異なります。 */ for(i = 0; i < app->soundElements[no]; i++){ IMEDIA_SetMediaData(app->media[i], &app->mdata[sindex + i]); IMEDIA_RegisterNotify(app->media[i], (PFNMEDIANOTIFY)MediaNotify, app); } for(i = 0; i < app->soundElements[no]; i++){ int ret; ret = IMEDIA_Play(app->media[i]); if(ret == SUCCESS){ DBGPRINTF("########### PLAY SUCCESS ##############"); } else{ DBGPRINTF("########### PLAY ERROR ##############"); } } /* 開放 */ for(i = 0; i < 3; i++){ if(app->media[i] != NULL){ IMEDIA_Stop(app->media[i]); IMEDIA_Release(app->media[i]); } } for(i = 0; i < 25; i++){ if(app->mdata[i].pData != NULL){ FREE(app->mdata[i].pData); /*ここでDupricate Freeエラーが発生*/ app->mdata[i].pData = NULL; } }
- 166 名前:160 mailto:sage [04/10/29 15:38:05]
- あと、この質問とは別件ですが、>>164で
ISHELL_LoadResDataEx(app->a.m_pIShell, RES_FILE, SE_1 + k, RESTYPE_IMAGE, (void*)-1, &dwSize);や buf = ISHELL_LoadResData(app->a.m_pIShell, RES_FILE, SE_1 + k, RESTYPE_IMAGE);で intからunsigned shortに変換しました〜〜のwarningが出ます。kはuint16にしてあるので、型は間違っては無いと思うのですが。 定数を足すとダメなのかな?エミュでは問題なく動きますが、ARMには通りそうにないんで直したいんですが、どうしたらいいでしょうか?
- 167 名前:デフォルトの名無しさん mailto:sage [04/10/29 17:50:48]
- >>165
俺はFREEでなく ISHELL_FreeResDataを使っている >>166 型はint16じゃないの?
- 168 名前:160 mailto:sage [04/10/29 18:05:53]
- >>167氏
ISHELL_FreeResData使いましたが同じ結果になりましたorz 後、型は確かにint16でしたね。でもkをint16に直しても結果は同じでした・・・
- 169 名前:デフォルトの名無しさん [04/10/29 18:17:33]
- BREWユザーズガイド読んだら、
ARMコンパイラ使用上の注意として 条件文で変数を指定すんな!って書いてあるんだが、 もしかして条件式に変数を書いちゃいけないんだろうか?
- 170 名前:中の人 mailto:sage [04/10/29 19:51:14]
- >>164
とりあえず、bufのポインタ自体を保持しておかないと正しく開放できないですね。 duplicate freeって、FREE()呼んだ時点じゃなく、アプリ終了時とかに表示されませんか? 確保したのはbuf(サイズはdwSize)なのに、mdata.pDataはbuf+offset(サイズはdwSize-offset)を 指しているので、FREE(pData)を呼んでもbuf自体は開放されてないです。 なので、「アプリ終了時に未開放のメモリが残る→実行環境がbufを開放する→bufとpDataの 重複する領域が二重開放になる」という現象が発生します。 あと、ISHELL_FreeResDataを使うのが正しいです。 (わかりにくい説明ですみません) 結論は「pDataじゃなくbufに対してISHELL_FreeResData()使ってください」 >>169 ARMのコンパイラは、 if(nRet = IMENUCTL_HandleEvent(pme->pIMenu, eCode, wParam, dwParam)) { /* MenuCtlがイベントを処理したっぽい */ return TRUE; } みたいなコードを書くと、「代入の結果を条件判断に使ってるよ?」と警告をはきます。 (代入じゃなく比較したかったんじゃないの? と言いたいらしい) warningが溜まりすぎると「too many warning」とその時点でエラー扱いに なってしまう(コンパイルできない)ので、条件文の中で代入を使わないほうが良いです。 こう書いたからといって危険なバイナリが出来るわけではないですから、 コンパイルさえ通ればこう書いても問題ありません。
- 171 名前:中の人 mailto:sage [04/10/29 20:05:59]
- あ、FREE(pData)呼んだ時点で、pDataとbufが重複してるから
二重開放エラーになるんですね
- 172 名前:デフォルトの名無しさん mailto:sage [04/10/29 21:38:14]
- >>165
単純に解放処理の順番がまずいだけじゃないの? app->media[i]って構造体を解放してから そのメンバapp->mdata[i].pDataを解放してるようだが。 逆にしてみたらどうか。 /* 開放 */ for(i = 0; i < 25; i++){ if(app->mdata[i].pData != NULL){ FREE(app->mdata[i].pData); /*ここでDupricate Freeエラーが発生*/ app->mdata[i].pData = NULL; } } for(i = 0; i < 3; i++){ if(app->media[i] != NULL){ IMEDIA_Stop(app->media[i]); IMEDIA_Release(app->media[i]); } }
- 173 名前:デフォルトの名無しさん mailto:sage [04/10/29 21:40:31]
- >>166
リソースのIDを計算で与えてることがそもそも間違い。 'SE_1 + k'と書いてるところの引数はリソースのIDを指定するものだが、 リソースのIDはあくまでラベル的に扱い、数値として見てはいけない。 計算後のIDがリソースファイルに存在する保障はないし、リソースファイル の作り方次第ではIDが連番で割り振られるわけでもないから。 何が何でもIDを計算で渡すというなら明示的にキャストすれば とりあえずコンパイルは通る。
- 174 名前:172 mailto:sage [04/10/29 21:49:30]
- ごめん。>>164のソースよく読んでなかった。
>>170-171に同意ってことで。
- 175 名前:デフォルトの名無しさん mailto:sage [04/10/29 22:40:57]
- 俺は
const int16 idid[3] = {ID_AAA,ID_BBB,ID_CCC}; とかやってる >>164でいうと ISHELL_LoadResDataEx(app->a.m_pIShell, RES_FILE,idid[k], RESTYPE_IMAGE, (void*)-1, &dwSize); とゆーかんじだ。参考にならなかったらごめんな!
|

|