タイトルのまんまである。 Opie 側の代表に snapshot 20021122 でなく cvs (2003 3/18 時点) を使うのは、 でたばっかの Qtopia 1.6.0 に対して時期的に古い snapshot は公平でないということによる。
とくに qtopia 1.6.0 はノーマルの libqte 2.3.4 では動かず、 opie cvs から override patch を当てなければならなかった (もしくは Qt/Embedded 2.3.4 の cvs snapshot を使う?) のだから、override patch を含まない opie snapshot 20021122 では不公平がすぎるというものである。
もっとも opie cvs のものと opie snapshot で本質的な違いは見出せなかった。 Qtopia 1.6.0 が叩いてる override patch のコードは縦横動的切替えのためにあり、 それを必要とする opie cvs も同様のことができるとふんで動かしてみた opie cvs だけど、 こちらはそういうことはできなかった。
なお、
このページでも OpenZaurus は使ってない。 それぞれに付属してくるアプリ以外はおおむね Debian woody のものである。 てか、OpenZaurus のバイナリを使ったことはないし、これからもたぶん使うことはない。 ソースとの対応がとれないバイナリなんて。
Qtopia 1.5.x, Qtopia 1.6.0, Opie snapshot-20021122, Opie CVS などと Qt/Embedded の上で動く似たようなものがいくつかあるが、 「似たようなもの」であって「同じもの」ではなく、 それぞれに付属する Qt/Embedded の config file (qconfig-qpe.h) は少しずつ違う。 3/16 でハマった件も真の原因はおそらくこのあたり。
パッチは opie-cvs から unpolish, style, setpalette, listview, override, gfxraster, simpad をあてた。つまり、FAIL しないやつをすべて。
Config file としては両者を混ぜ合わせて こういうの を使う。 これで libqte が 2.3.4 あたりでサポートした QWIZARD, QMEMORYFILE の振舞いが qtopia や opie の期待するものになる。
... ことになってんだけどさ、config file 中で QMEMORYFILE を外すことを要求していながら 実際のアプリでは「qmemoryfile を作るよ〜」なるメッセージが stderr に出てくるのは どういうわけだ > qtopia 1.6.0
# export QTDIR=/home/src/Qt/arm/qt-2.3.4
# export QPEDIR=/home/src/Qt/arm/qtopia-free-1.6.0
# cp /opt/Qtopia/bin/uic ${QTDIR}/bin
# cd ${QTDIR}/include
# ln -sf ${QPEDIR}/include/qpe qpe
# ln -sf ${QPEDIR}/include/qtopia qtopia
# cd ${QPEDIR}/src
# ./configure -platform linux-sharp-g++
# make
ていどで素直に make できる。... はずなんだが、ちょっとバグってんな。
アプリの make 時になぜか make したばっかのライブラリのインストール先をみてくんない。
てなことはしておく必要があった。--- src/configs/linux-sharp-g++-shared~ Fri Mar 14 01:59:59 2003 +++ src/configs/linux-sharp-g++-shared Tue Mar 18 22:57:06 2003 @@ -25,8 +25,8 @@ SYSCONF_LFLAGS_X11 = SYSCONF_LIBS_X11 = # Qt, Qt+OpenGL -SYSCONF_LFLAGS_QT = -L$(QTDIR)/lib -SYSCONF_LIBS_QT = -lqte$(QT_THREAD_SUFFIX) +SYSCONF_LFLAGS_QT = -L$(QTDIR)/lib -L$(QPEDIR)/lib +SYSCONF_LIBS_QT = -lqte$(QT_THREAD_SUFFIX) -lqtopia SYSCONF_LIBS_QT_OPENGL = # OpenGL SYSCONF_LFLAGS_OPENGL =
ただし、これがまともに使えるのは英語モード時のみで、 言語切替えと併用するとボロボロになる。横に 2 つしか置かなかったり、落ちたり。 文字幅でも計算してんのかな ... どーせ C700 由来のコードだろーになんで動かんのや ??
できれば、ついでに言語切替えも即時切替えに対応してくれ (今は 1.5.0 と同じく qpe を立ち上げなおしている)。
占有メモリは 1.5.0 の時よりもやや減ってみえるが、そんなこともないんだろう。 ま、増えてるにしても減ってるにしても差は気にするほどではなさそうだ。
個々のアプリは 1.5.0 と本質的な違いは見出せなかった。 まあ 3 分くらいしか触ってないわけだが ...。
占有メモリは Qtopia 1.5.0/1.6.0 に対して +2MB は覚悟しないといけなさそう。 qpe 本体 ( サーバの /usr/local/opie/bin/qpe のことだ。 何故か /usr/local/opie/bin/opie とは言わない) は似たようなもんなんだが、どこでどう食ってるのかは不明。
タブのデフォルトを上に出すか下に出すかを切替えられる (という意味だよねぇ。動作的にはそういう雰囲気なんだが、コード読んでないので詳細不明)。 ちなみに上の例はタブが下に出ている図 (cf. Qtopia 1.6.0 の開発メモのスクリーンショット中の Appearance 画面ではタブが上に出てるな)。![]()
Tab を下に出して何が嬉しいかって、片手で操作するのにいい。 フルスクリーン使う QTabWidget の場合でタブに指が届く。 QTabWidget は qtopia/opie でなく libqt/libqte に含まれる widget だから qtopia/opie 間で差があるはずはないんだが、 qtopia ではまだサポートされていない。
Tab でない、drop down menu 形式にすることもできる:
が、... さすがにデフォルトをこーしてしまうのは、 アプリ側のデザインの都合とカチあうんではなかろうか。 そもそもこの Appearance でのデザインそのものがカチあってるよーな気がするし。 Style/Font/Colors... を選ぶ drop down menu が無用に長く感じるとゆー意味で。![]()
アプリを右上の「x」ボタンで close しても最下段左にならぶ当該アプリのアイコンは消えない。
そのアイコンを(長めに?)タップすることで初めて消える。
これはつまり、close したアプリに対して最下段アイコンを通じてなにかしらの操作ができる
... か、できるようにすることを目的とした仕様変更のはずだが、
アイコンを消す以外のことは出来ないうえに
短クリックなどなにかしらの動作がわりあたってるとおぼしき操作をすると
qpe ごと落ちてくれる -_-;;
これ、実はバグだったよーだ。今は qtopia のと同じふつーの動作に戻っている。
以上の 3 点は前提として、個別のアプリを掲げるとすれば、 Advanced File Manager につきる:
ディレクトリを複数ひらける、速い、まとも!![]()
つまり、
本家スクリーンショット
も最新追従しとらんのだな ...。
ところで、気色悪かった Appearance の icon が変わったと思ったら、別のやつが目玉になった。 wellenreiter とかいうやつ。 ったく。
もっとも、この関係で default rotation という概念が入り、これがまた A300 でバグっている (部分的に A, B, C への対応が入っている; cf. libopie/odevice.cpp) ため、かえって A300 ではまともに動作せんハズではあるし、 landscape でヨコ 3 つなのはそのままらしい。 なんつーか qtopia 1.6.0 の挙動を見習う気はないか ──
などと書いていたのだが、ちゃんとヨコ 4 つになった。すまんかった > OPIE.
これの対処法ってのもいちおうあって、 autocheck = 0 と一行だけ書いた .opiestorage.cf を mount point のディレクトリに置くと、その partition は見なくなる (library/global.cpp の checkStorage() 及び core/launcher/launcher.cpp の Launcher::loadDocs()):
# cd /home # echo 'autocheck = 0' > .opiestorage.cf # cp .opiestorage.cf /mnt/cardこれで opieplayer も showimg も openfile 周りが格段に速くなった (別に褒めてない。単にようやくまともになった、というだけのことだ)。 Global::findDocuments() に openFile のすべてを頼ってるタイプのアプリでは ファイルが開けなくなるが、opieplayer や showimg では ファイル名を指定して開くことができるので関係ない。 てか、Global::findDocuments() に全てを預けるようなタコアプリは捨て捨て。
もちろんこれは opie だけで、qtopia 1.x では効かない。
かわりといってはなんだが qtopia 1.6.0 では .Qtopia-ignore というファイルを置いておくと、
そのディレクトリから下をみなくなるようになっている (library/applnk.cpp
の DocLnkSet::findChildren(); opie でも使えるけど)。
ったく、わかってんならちまちまと小細工せず、
抜本的にどーにかしようというつもりはないんかな ...
core/launcher/launcher.cpp に、
なんて書いてないでさ .../** This is a HACK.... * Reason: scanning huge mediums, microdirvers for examples * consomes time. To avoid that we invented the MediumMountCheck * * a) the user globally disabled medium checking. We can ignore * all removable medium * b) the user enabled medium checking globally and we need to use this mimefilter * c) the user enabled medium checking on a per medium bases * c1) we already checked and its not ask again turns * c2) we need to ask and then apply the mimefilter */
# dmesg (中略) r7 : ffffffff r6 : ffffffff r5 : 00000000 r4 : 00008201 r3 : 00000000 r2 : 00000036 r1 : 0000003c r0 : bffff370 Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user Control: 397F Table: A14D8000 DAC: 00000015 signal = 11 pc : [<0008e3fc>] lr : [<4036b07c>] Not tainted sp : bffff94c ip : 000731c0 fp : bffff964 r10: 405f32cc r9 : 0009adec r8 : 00005124 r7 : 00005120 r6 : 00000000 r5 : 000a2490 r4 : 0009ba58 r3 : 4074bd80 r2 : f7ffffff r1 : 000a2460 r0 : 0009ba58 Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user Control: 397F Table: A530C000 DAC: 00000015これでカーネルが死ぬことはないようだが、 qpe が死ぬことがあるので実用上は Vmemo は untouchable である。
C700 のコードも on-the-fly rotation 周りに「まだだよん」とコメントされてる部分があったり。 Input style/view style の切替えのあたりが不安だ(笑)。