1 名前:1 [2006/01/17(火) 21:55:41 ] BREW(Binary Runtime Environment for Wireless)についてのスレ ■テンプレ kintubo.kakiko.com/brew/ ■前スレ 06 pc8.2ch.net/test/read.cgi/tech/1126846736/ ■過去スレ 05 pc8.2ch.net/test/read.cgi/tech/1119056460/ 04 pc8.2ch.net/test/read.cgi/tech/1111028365/ 03 pc5.2ch.net/test/read.cgi/tech/1096006023/ 02 pc5.2ch.net/test/read.cgi/tech/1076511398/ 01 pc2.2ch.net/test/read.cgi/tech/1011078904/ 関連情報 >>2-10
49 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:11:59 ] わかんねのなら、安全側に倒してコールバック待てば良いのでは? JPEGはすぐには展開は終わらないだろうし、PNGもサイズに よっては一回の読み込みで展開が完了しないんじゃないかな? コールバックを無視したことがないので良く知らないけど。
50 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:39:52 ] >>49 コールバックの待ち方はどうやってますか? volatile int flag=0; //コールバックの中で1に設定 ***_SetStream() while(flag == 0); ってやったら固まりました。待機用のイベントオブジェクトや お勧めの方法ありましたらお願いします。
51 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 00:31:09 ] returnして待つ。システムに返さなきゃ非同期の展開もしないし。
52 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 07:46:43 ] 無限ループを使ったコールバック、イベント待ちは、NG。 アプリ側が処理している間はシステム側は止まっている。 なので、returnしてシステムに自由を与えないとダメ。 もちろん、コールバック待ちの間にもキーイベントとか、 サスペンドイベントとかが割り込んでくるので注意が必要。
53 名前:39 mailto:sage [2006/01/26(木) 08:40:16 ] ありがとうございます。 >returnして はああああ…orz LoadImageみたいに完了復帰で読み込む方法はありませんでしょうか。 あっちでやってるならこっちで出来ないことでもないと思うのですが、 うむむむ。
54 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:22:26 ] >>53 自前で展開
55 名前:39 mailto:sage [2006/01/26(木) 10:44:29 ] >>54 JPEGやPNGの展開ルーチンを自前で持つことは出来ますが、 容量制限から現実的ですか? 実際やっているのでしょうか。こちらはもう容量ぎりぎりなので、 とてもじゃないが…というところです。
56 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:57:42 ] つまり君はこう言いたいわけだ。 完了復帰でJpeg読めて容量食わない方法キボン(゚д゚)
57 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:59:09 ] >>39 IMemAstreamとpngのセットなら、即展開されたと思ふ。 まぁ俺も端末依存怖くてコールバック待ってるけど。 >ASTREAMが非同期ストリーム こっちはファイルや通信用のストリームとして使用できるから非同期。
58 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 11:22:10 ] >>55 >容量制限から現実的ですか? Java で PNG の展開やったけど、5KB ぐらいだった。 BREW でやっても 10KB ぐらいじゃね? さすがに jpeg はきついと思うけどな。
59 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 04:06:17 ] 先輩方! 初検証提出のちぇっくに右往左往しております。 いくつか質問させてください。 ・通信待ち時にクリアキーでキャンセルできることみたいな項目ありますが、エミュレータでAVK_CLRのキーイベントがおこったすぐあとにSTOPがきてしまいます。 通信をキャンセルどころかアプリが終了してしまうんですけどいいんですか? ・RESUME/SUSPEND時に具体的に何したらいいかわかりません。 SUSPENDイベントがきたら、ISHELL_LoadResImageとかで確保した画像とかサウンドとか解放しないとダメですか? 解放しちゃうと、RESUM時に全部再読込しないと思うのですが、他のサイトのアプリみてると読みこんでるようには見えないです。 ・アプリ起動時のヒープが十分に・・・って項目ありますが、起動時には十分で、リソースを初期化するときに不十分になったら終了しちゃっていいですか? それとも、すべてのリソースが確保できるヒープがあることを確認しないと起動しちゃダメなんですかね?
60 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 04:14:59 ] 1つめについて キーに対して処理を端末に任せるかどうかの判断はEVT_KEYイベントでしか返せない EVT_KEY_PRESSとEVT_KEY_RELEASEでreturn TRUEを返しても、 端末はクリアキーの処理を自分で処理してしまうんだ だから case EVT_KEY: if( wParam == AVK_CLR ) return TRUE; とかしておけ
61 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 04:35:55 ] >>60 すばやいレスありがとうございます。先輩も会社にお泊まりですか? そのとおりEVT_KEYにtrueを返したらうっかり終了しなくなりました。 ちなみに、チェック項目で ・EVT_KEYで終了確定動作 ユーザからのキー入力においてEVT_KEYイベントで確定動作を行っているか確認して下さい。 アプリ終了動作をEVT_KEY_PRESSにて終了確定とした場合、その後EVT_KEYがアプリケーションマネージャに送られてしまいアプリが自動起動してしまう等の不都合が発生します。 ↑これは、EVT_KEY_PRESSをトリガにして遷移処理するなってことでしょうか?
62 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 08:41:00 ] うん
63 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 10:11:39 ] アプリのヒープは一番データを読み込んでる所+50Kくらい 起動時にチェックしとけばいいかも。 それでも足りなければさらに多い容量でチェックする感じ。 最悪、自分のアプリ以外は何も動いてない状況じゃないと 動かない場合のみ起動ですらいいのかもしれん(゚∀゚) それでもメモリ確保できない場合はエラー表示して終了。
64 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 12:02:51 ] すみません。。 ITextCtlで入力モードを指定するITEXTCTL_SetInputModeにおいて 半角英数字のみにしたい場合AEETextInputModeはどのように指定すれば いいのでしょうか。。AEE_TM_LETTERSの指定から 半角カナや特殊文字を除きたいのですが、やり方がわかりません。 すみませんが教えてください。
65 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 19:00:54 ] つ[プログラミングガイド] つ[サービスガイド]
66 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 03:38:43 ] >>55 PNGの自前展開についてはBREWはIUnzipAStreamがあるからピクセルデータの展開は楽。 あとはチャンクの解釈と透過色の設定とかちょこっとやってやればおk。PNGOUTとか通して 必須チャンクのみなら順序も決まってた気がするしさらに楽。数KBも喰わないんじゃないかな。 IUnzipAStreamがバッファに40KBくらいメモリもってくけど、IImageにPNG読み込むときも同じ だし。 JPEGはシラネ。一部の機種で扱いが面倒だったりするし出来れば使いたくないフォーマット。
67 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 05:21:51 ] >>66 IUnzipAStreamも非同期展開のような気がするんだが。 >>53 LoadImageでも、JPEGはコールバックを待つ必要がある。 展開に時間が掛かってヤバス、なので非同期にしている んだと理解していたんだけれど、認識誤っているのかな? 確か、何msかに一度はシステムに戻さんとダメだよね。
68 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 10:47:13 ] >>67 IUnzipAStream は while でグルグル回して何度も取得すれば展開できるよ。 でかいファイルだとやばいけど、100KB ぐらいなら問題ない。 というか PNG ってイメージ部は IUnzipAStream で解凍できたのか……。 俺はいつも手動で展開してたよorz
69 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 12:39:37 ] すまそ、そうでしたか。 IUnzipAStream を最後に使ったのは、かれこれ二年 くらい前なので実装を忘れてしまっているです。
70 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 00:11:52 ] >>68 >IUnzipAStream は while でグルグル回して何度も取得すれば展開できるよ。 AStream系は同様にして非同期から逃れられないものでしょうか?
71 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 00:54:56 ] IAStream である以上、リファレンスに同期で動作するって書かれてるか、 フォーラムとかで同期であることを保証してもらわない限りは、非同期である可能性はある。 同期であるのを絶対に保証したいのなら、自前で実装した方がいいよ。
72 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 10:37:47 ] >>67 >LoadImageでも、JPEGはコールバックを待つ必要がある。 LoadImageってどこでコールバック登録するの?
73 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 20:44:46 ] ガイド読めって。 わざわざピックアップして解説してるうえ、サンプルコードまで出てんのに。
74 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 11:02:56 ] 国内端末は今のところ結構仕様が平均化しているし、APIリファレンスに書いてない ことでも大体同じような挙動を示す(PNGはコールバック待たなくても大丈夫、ファ イル読み込みもコールバック待たなくても大丈夫)けど、海外端末扱ってみると そりゃもうばらばらだよ。 仕様に書いてない変な制限があることもしばしばあるし。 国内の仕事しかしない人も、今後はKDDIが海外端末導入することも考えて、せめて リファレンスには忠実に作っておいたほうが良いと思うぞ。
75 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 14:30:05 ] >>73 サンプルコード読んでみたけど流れがますます分からなくなった。 コールバックを待つためにいったんリターンするような流れには せず、いきなりインスタンスをReleaseしているっぽい。 LoadResImageにいたってはコールバックの登録がLoadResImageの後だし、 表示のためのコールバックとなっていて読み込み完了には言及されていない。 もともとあっちこっちに間違いがあるようなサンプルだから、そのまま真似する のはまずいかなあ。
76 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 15:38:48 ] >>75 話の流れからして、Javaの移植だよな? JPEGのデコードに話が偏ってるようだが、 通信だってバッファある程度取得したらシステムにreturnする。 スレッド処理で楽してた部分は全部BREWじゃ書き直しだろ。 みんな同じ条件で使ってるんだ。 文句ばっか言ってねーで使いこなせyp
77 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 19:16:59 ] LoadResImageでコールバック待たないといけないってどこかに書いてある? ガイド探しても見つからん。
78 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 19:22:15 ] >>77 APIリファレンスのコメント覧。
79 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 20:52:43 ] IDataFolderでファイル選択しようとしてるんだが、 選択ファイル数1でファイルを選択しようとしても選択マークが付かないことがあるんだが、 何か心当たりある人いる? セレクト連打してるとたまに選択マーク付いたりするけど、挙動が結構謎で困ってる。 ちなみに端末はW32SA。
80 名前:79 mailto:sage [2006/01/30(月) 20:54:11 ] 追記。 最大ファイルサイズは0で上限なしにしてる。
81 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 23:44:26 ] どっかで重い処理やってるせいでキーが取れなくなってるだけじゃね? タイマーとかコールバックとか
82 名前:73 mailto:sage [2006/01/30(月) 23:47:45 ] >>75 >LoadResImageにいたってはコールバックの登録がLoadResImageの後だし、 >表示のためのコールバックとなっていて読み込み完了には言及されていない コールバックの意味分かってるかい? IIMAGE_Notify()で登録する関数は、読み込みが完了したら呼ばれる関数だ。 だからこの関数が呼ばれるということは読み込みが完了したということであり、 関数の内容が表示処理になってるのも当たり前。 コールバック関数の登録は、読み込みを指示した直後にする。 だからサンプル通りの順番で合ってる。 プログラミングガイドのP200あたりに出てるJPEG読み込みのサンプル見てるだろ? 念のため解説してやるよ。 1.ファイルから読み込む例なのでIFileMgrのインスタンスを作る。 2.jpeg読み込みのためにIImageのインスタンスを作る。 インスタンス生成に失敗したらIFileMgrを解放してリターン。 3.いよいよjpegファイルを読み込む。 読み込みに失敗したらIImageとIFileMgrを解放してリターン。 (↑このIIMAGE_Release()を勘違いしたんじゃないか?) 4.IIMAGE_Notify()でコールバック関数を登録。 ここで登録した関数はファイルの読み込み完了時点で呼ばれる。 ここでreturnとはかかれてないが「−−−−−−(線)」で区切ってあるだろ? ここから別の記述場所だよってこと。 他に何か処理を続けるにしても、いずれreturnしますよ、ということ。 5.一方、コールバック関数は… 読み込みが完了したことによって ここが実行されているので、あとは表示するだけ、と。 説明が下手かもしれないけど、大体わかるだろ?
83 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 08:30:09 ] 結論: サンプルが解りづらい 対策: サンプルの行間を読む
84 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 10:50:43 ] 行間を何ピクセルにしたら読めますか。
85 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 11:09:15 ] >>84 お前さんの解像度じゃ1ピクセルでも読めない
86 名前:79 mailto:sage [2006/01/31(火) 18:21:59 ] >>81 特に何も行ってないんだが…… というか、キー取れなかったらカーソルの移動もできなくなるだろうしなぁ。
87 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 21:30:20 ] おかげでNomadという素晴らしいメーカーの存在をしった。 ありがとう
88 名前:デフォルト名無しさん mailto:sage [2006/02/02(木) 12:16:55 ] 今BREWを勉強してるんですけど、 ボタンを押して次の画面に行く 簡単なサンプルとか無いですかね? カレンダーとか解りにくくて...
89 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 12:49:33 ] >>88 1.HelloWorldのサンプルコードを用意する。 2.キーが押されたら違う文字列を描画するよう改造する。 まずこれやって。
90 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 13:48:37 ] 既にBREWがどうとか以前の問題のような気がする。
91 名前:& ◆D3ra0B2LiQ mailto:sage [2006/02/02(木) 15:01:57 ] >>89 作成しました。次は何をすればよいのでしょう??
92 名前:デフォルトの名無しさん [2006/02/02(木) 17:10:26 ] >>91 ITMediaの入門ページ見れば?
93 名前:89 mailto:sage [2006/02/02(木) 18:58:47 ] >>91 >>89 ができたんなら>>88 が解決したってことじゃん。 「次は何をすればよいのでしょう」と言われても、好きなようにしなよ、としか…
94 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:23:27 ] 次は音でも鳴らせば
95 名前:BREW珍兵 mailto:sage [2006/02/02(木) 23:55:01 ] おっとっとでも作るのか
96 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 18:24:44 ] >>93 いやね、「まずこれやって」と言われて続きがあるのかなと思いまして... でも、できたんでよかったです。
97 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:01:11 ] マニュアル世代論
98 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 19:02:30 ] そういうのがひねくれると2chで暴れるんだよな
99 名前:デフォルトの名無しさん [2006/02/06(月) 10:34:42 ] BREW3.1端末とAPPLOADERを使用できません。なぜか? (w33SA、w41s)
100 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 10:43:44 ] 坊や・・・ApploaderにはBREW3.1に対応していない古いやつもあるって噂さ
101 名前:デフォルトの名無しさん [2006/02/06(月) 10:52:27 ] APPLOADERのバージョン3.0.0です QCOMOEMM。DLlは3.0.0.12.
102 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 10:53:56 ] どのバージョンがBREW3.1に必要ですか?
103 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 13:37:32 ] 接続時に正しいポートとバージョン選んでるか?
104 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 14:24:18 ] >>103 はい COM2は"au W33SA Serial Port"と BREWバージョンは”3.x”
105 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 15:11:37 ] デバグ用端末設定してないっつーオチはないよな?
106 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 15:32:15 ] >>99-105 そろそろ気をつけた方がいいですよ
107 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 15:41:14 ] 守秘義務か。 言いたいことも言えないこんな世の中じゃ
108 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 22:33:45 ] いまいちブラウザ起動の処理がうまくいきません。こんな関数作ってみましたがどっか間違ってます?(or認識違ってます?) Brew2.1 void webTo( AEEAPPLI* sys, char *url ) { char buf[1024]; MEMSET( buf,0,sizeof(buf)); if( ( sys->webInfo = (ShimBrowserInfo*)MALLOC(sizeof(ShimBrowserInfo))) != null ) { sys->webInfo->cbSize = sizeof( ShimBrowserInfo ); sys->webInfo->clsid = AEECLSID_XXXX; SPRINTF( sys->webInfo->url, "%s", url ); SPRINTF( buf, "ezurlto:0x%08x",sys->webInfo ); ISHELL_BrowseURL( sys->shell, (const char *)buf ); } else { sys->memory_over = true; } }
109 名前:108 mailto:sage [2006/02/06(月) 22:54:01 ] ちなみに webTo(sys,"www.yhaoo.co.jp/top/ "); みたいにして呼び出してます。 ステップ実行してみたところ、とくに異常もなく実行できるんですがなんにも起動しません。エミュレータ(Brew2.1)ではブラウザのエミュレートできないの? ISHELL_BrowseURLを呼び出す時点で、bufには"ezurlto:0x[sys->webInfoのアドレス]"が入っています。
110 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 23:08:37 ] 関数抜けたらバッファが解放されるからじゃねーの? あと、ret_evt にイベントをセットしてないのも怪しい。
111 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 23:10:13 ] エミュだとブラウザはでないけどなんか画面が切り替わったような気がする
112 名前:デフォルトの名無しさん [2006/02/06(月) 23:20:59 ] >>110 修正して、bufは保持するようにしてみた。ret_evt=EVT_USERセットしてみましたがやっぱり起動せず。 原因わかんないです。。。。 認識間違ってたら指摘お願いします。 @ISHELL_BrowseURLを呼び出したら、AEEからSUSPENDイベントが呼ばれて、自分はサスペンド Aブラウザを終了させると、呼び出しもとのCLSIDをレジュームする。 B復活。 ホントはドコモみたいにいってらっしゃいで帰ってこなくていいんだけど、無理みたいなんで。
113 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 23:24:27 ] >>108 エミュは無反応だよ。 サスペンドが飛んできたかどうかは忘れたけど、 兎も角実機で検証汁
114 名前:108 mailto:sage [2006/02/06(月) 23:30:26 ] >>113 >>エミュは無反応だよ。 それ本当なんすか・・orz うち開発会社だから実機検証めんどいのに・・・
115 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 23:59:08 ] エミュが参照するフォルダにアプリと一緒にブラウザのダミーのやつ 入れておけば2.1は切り替わらなかったっけ。 3.1はどうもうまくいったためしないんだけど。
116 名前:名無しBREWたん mailto:sage [2006/02/07(火) 11:48:50 ] >>104 au Win ケーブルは使えないよん。 おとなしく my Sync ケーブルを手に入れるか 互換性のあるケーブルを探すしかない。
117 名前:名無しBREWたん mailto:sage [2006/02/07(火) 11:51:13 ] って、レスしに来たんじゃあなかった罠。 DBGPRINTFをうまく消すやり方だけど、 過去ログだといろんな人がいろいろ言っていたけど、 以下のコードを挟んでみたらとりあえず Logger にはでなくなった。 でも、評価式は残るから、評価式に意味がないときに コンパイラの最適化で消えているかどうかを調べるにはどうすればよいのだろうか。 #undef DBGPRINTF #define DBGPRINTF
118 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 12:02:40 ] >>117 アセンブラ吐き出して確認すればええんじゃない?
119 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:29:51 ] DBGPRINTFだってマクロなんだから 自分で同等のマクロ作ればいいと思う。
120 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 14:22:48 ] 空のインライン関数にしたら?
121 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 14:59:45 ] if( cond ){ DBGPRINTF( ... ); } って書いたときに、最適化によって if 文自体が消えるかどうかって話でしょ? 同等のマクロを作るとか、空きのインラインにするってのは違うと思うんだが。
122 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 15:08:43 ] え、みんなワーニング全部消してるの? 親クラスの仮想関数で引数使ってないからって怒られて以来 全部放置してるよ('д')
123 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 16:05:56 ] >>121 の場合、DBGPRINTF が消えると、cond の処理(if 文の処理)自体が 命令数的にも処理時間的にも無駄だから、それを ARM コンパイラが 無意味な cond の命令から消してるかどうかってことだろ? Warning は何の関係もない気がする。
124 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 17:46:44 ] >>121 俺はこうかと思ってた。 デバッグ時 DBGPRINTF("line:%d", __LINE__); ↓ 製品(DBGPRINTFをundefして空マクロに) ("line:%d", __LINE__); するとこんなWarningが。 "c:\BREW_SDK\311463~1.2_J\sdk\examples\HELLOW~1\HELLOW~1.c", line 103: Warning: C2917W: no side effect in void context: '"line:%d"' "c:\BREW_SDK\311463~1.2_J\sdk\examples\HELLOW~1\HELLOW~1.c", line 103: Warning: C2917W: no side effect in void context: '<integer constant>' ここらがバイナリでちゃんと削られてるのか? ってことかと。
125 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:13:47 ] >評価式
126 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:41:23 ] 最初っから#ifdef _DEBUGでくくってるので問題にならんのだが、 みんなデバッグプリント裸で書いてるの?
127 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:52:33 ] いや、ちゃんと服を着て(ry
128 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 20:35:27 ] >>126 俺はデバッグ出力用クラスを作ってるよ。 リリース時は全部中身を空にしてる。
129 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 21:58:48 ] >>126 くつ下ははいてる
130 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 23:23:58 ] >>116 マジで使えない? usbケーブルwinでw21saを接続できます。
131 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 02:10:06 ] 消えない背景の上でお絵かきするみたいな機能を作りたいんだけど 複数の画面バッファをレイヤーみたいに重ね合わせるのは可能ですか?
132 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 02:26:39 ] >>131 IBITMAP_CreateCompatibleBitmap() と IDISPLAY_CreateDIBitmap() を知らんのか? それとも重ね合わせる方法がわからないって言ってんのか? アルファブレンドとか加色合成でレイヤーを重ね合わせるのなら、 DDB から DIB を取得して自前で転送が基本だろ。
133 名前:デフォルトの名無しさん [2006/02/08(水) 18:44:13 ] Brew2.1端末で、終話キーを押してそこから終了ってするとなぜか端末がリセットしてしまいます。 端末がリセットするってことはnullにアクセスしてるからだと思うんですけど、エミュではちゃんと終了できるので解放やり残しではないみたいです。 そこでききたいんですけど、EVT_APP_STOP時にタイマーキャンセルして、falseを返してるんですけど、これってダメですかね? どっかの仕様書でtrueを返すとダメって書いてあったんでfalseにしているんですけど。 リセットで思い当たるふしがなくて、どうやって修正したらいいもんか悩んでます。。。お助けを・・・orz
134 名前:デフォルトの名無しさん [2006/02/08(水) 19:50:05 ] STOPはTRUEだめだっけ?
135 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:16:19 ] 2.1環境と3.1環境をインスコしたらVCがコンパイル通らなくなりました。 環境変数のBREWDIRが書き換えられるって認識あるんだけど、具体的にどうやったら切り替えできますか? modはmakefileをいろいろ書き換えてなんとかなったんだけど、肝心のVCでコンパイルできん。
136 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:19:10 ] >>134 てか true じゃないともっかいアプリが起動した覚えがある。 ついでにいろんなサンプルを見てみたけど、false を返してるものは無かった。
137 名前:133 mailto:sage [2006/02/08(水) 20:31:32 ] >>134 >>136 ホントだ、どこ探してもそんな記述はない。なんでこんな処理してるんだろう。謎だ。 ぜったいにfalse返してねーみたいなイベントあったっけ?
138 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:47:22 ] >>133 事前検証チェックシートにいくつか記載がある。 STOPは規制無かったと思うがtrueを返すべきかと。
139 名前:133 mailto:sage [2006/02/08(水) 21:33:32 ] >>138 W21CAで確認したんだけど、「終了」を選んでアプリ一覧に戻らずに待ち受け状態になったけどこれっていいのかな。 とりあえずtrueを返してリセットはしなくなりました。みなさんありがとう!
140 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:51:34 ] DBGPRINTFについて、関数型マクロの可変長引数が使えれば #ifdef _DEBUG #define TRACE(...) DBGPRINTF(__VA_ARGS__) #else #define TRACE(...) /* nop */ #endif とスマートにできる。VC2005ExpressとARMコンパイラなら使える。VC6は無理ぽ。VC2003は知らん。 結局どのコンパイラでも使えるのは #ifdef _DEBUG #define TRACE DBGPRINTF #else #define TRACE if(0)DBGPRINTF #endif しかないんだろうか。 ちなみにARMコンパイラで if (0) { // 処理 } というコードをコンパイルすると、ちゃんと最適化されてif(0)も含めてコードが無くなる。 なのでパフォーマンス的には後者のマクロでも問題なし。
141 名前:140 mailto:sage [2006/02/08(水) 22:04:02 ] ついでに>>117 についても調べてみた。 #undef DBGPRINTF #define DBGPRINTF DBGPRINTF("ぬるぽ %s", "がっ"); これで命令も、2つの文字列も最適化で消える。パフォーマンス上の問題は無し。 ただしWARNINGが出るので鬱陶しい。WARNINGが増えると、重要なWARNINGを見逃す確率が 高くなるのでオススメしない。
142 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 22:04:55 ] 最初はDBGPRINTF裸で書いてたから、 とりあえず無理やりこんな感じで解除してる。 今のところはそんなに問題ない感じだが、実際はどうだろう。 #undef DBGPRINTF #define DBGPRINTF if(0)DBGPRINTF
143 名前:142 mailto:sage [2006/02/08(水) 22:08:08 ] if(0)についても書こうかと思ったが、もう140が書いてたね。 書き込み前にリロードしないとこういうこともあるか。
144 名前:140 mailto:sage [2006/02/08(水) 22:15:10 ] さらに色々調べてみた。 if (cond) DBGPRINTF("ぬるぽ %s", "がっ"); これで、DBGPRINTFが有効な場合、条件分岐も含めてコードが生成される(当たり前)。 #undef DBGPRINTF #define DBGPRINTF でDBGPRINTFを無効化している場合、条件分岐も含めてコードは「削除される」。 要するにif文の中身が空な場合はifブロックごと削除されるらしい。 ただし、上記の動作はcondの値が予測できない場合に限る。 boolean cond = FALSE; if (cond){ DBGPRINTF("ぬるぽ"); } この場合、condが常にFALSEであることがコードから判別できるため、DBGPRINTFの定義に よらずifブロックごと削除される模様。 さらに int v = 0; if (TRUE){ v = 10; } といったコードですら、vが以降参照されていない場合ifブロックごと削除されている模様。
145 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 22:47:19 ] ARM コンパイラって結構賢いのね。 >>140 サンクス
146 名前:117 mailto:sage [2006/02/09(木) 09:36:03 ] >>140 勉強になりますた。 自分も逆汗してコード最適化の様子ぐらい見れるようにならんとだめだね。
147 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 10:06:36 ] bcc32でbrewコンパイルできるらしいけど、 C++Builderでコンパイルする方法はあるんでつか?
148 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 11:18:43 ] >>146 >逆汗してコード最適化の様子ぐらい見れるように やろうと思えば出来るが出来ればやりたくない
149 名前:140 mailto:sage [2006/02/09(木) 17:30:16 ] 書き忘れてましたが上記の検証はデフォルトで生成されるMakefileに -asm -fs を加えて検証しますた。最適化オプションは -Ospace -O2 となっているはずです。 あとお決まりですが、内容は無保証で。元ソースコードによって結果は違ってくるでしょうし。 何より今回は変更箇所を追いやすいようかなり単純なコードでしか検証していないので、 商用レベル(規模)のコードでは実は最適化しきれない部分が出てくるかもしれません。