Project

General

Profile

バグ #670

初回起動時にチュートリアルが表示されない場合がある

Added by Izumi Tsutsui over 5 years ago. Updated over 5 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
プラグイン名:
ブランチ:
クラッシュする:

Description

NetBSD/i386 6.1.4 + pkgsrc-2014Q1 で
mikutter-3.0.0-alpha2 のオレオレ作成パッケージ
という「とか環境」ですが、
(ruby-2.0.0p451 + ruby-gnome2-2.2.0)

~/.mikutter が無い状態からのスタートで
% mkdir .mikutter .mikutter/plugin
% touch .mikutter/plugin/display_requirements.rb
と先走ってDRキャンセルのプラグインを入れた状態で
mikutter-3.0.0-alpha2 を起動すると、
最初のチュートリアルが表示されません。
(添付の no-tutorial.png)

設定→アカウント情報→追加 で手動でアカウントを追加して、
アカウント登録の実績解除の表示がされると
その直前にチュートリアルが表示されます。
(添付の tutorial_register.png)

上記で
touch .mikutter/plugin/display_requirements.rb
する代わりに、
mikutter/core/plugin/display_requirements/display_requirements.rb を
~/.mikutter/plugin/ 以下にコピーして、

  # アイコン上のボタンの数の変更
  def _schemer
    {x_count: 1, y_count: 1} end

の3行をコメントアウトすると、この場合もチュートリアルが出なくなります。

チュートリアルが出ないというよりは、TL表示が開始されていないようにも見えますが、
そもそもチュートリアルが開始される条件は何なのでしょう?


Files

no-tutorial.png (14.8 KB) no-tutorial.png 最初のチュートリアルが表示されない状態 Izumi Tsutsui, 2014-05-10 23:45
tutorial_register.png (32.4 KB) tutorial_register.png 手動アカウント登録後にチュートリアルが出てきた状態 Izumi Tsutsui, 2014-05-10 23:45
cairo_miracle_painter.rb.diff (428 Bytes) cairo_miracle_painter.rb.diff Izumi Tsutsui, 2014-05-13 19:50

Associated revisions

Revision be3e3898 (diff)
Added by toshi_a 初音 over 5 years ago

Service.primary! を定義 refs #670

Revision c18f45b4 (diff)
Added by toshi_a 初音 over 5 years ago

チュートリアル時に display_requirements プラグインが無いと、システムメッセージが正しく表示されず、進行不能になる refs #670

Revision c7f0b820 (diff)
Added by toshi_a 初音 over 5 years ago

タイムライン上のシステムメッセージにたいして、アイコンオーバボタンを描画しないようにした refs #670

History

#1

Updated by toshi_a 初音 over 5 years ago

  • Assignee set to toshi_a 初音

チュートリアルは実績「tutorial」が解除されていない状態で必ず発生します。なんでしょうね

#2

Updated by toshi_a 初音 over 5 years ago

  • Status changed from 新規 to 実装待ち

確かに、タイムラインの上のほうに真っ白なツイートがあるようで、クリックするとそれを選択出来ました(標準リストビューの選択色になりました)。
また、デバッグモードで起動すると原因不明のクラッシュを引き起こしているようです。

#3

Updated by Izumi Tsutsui over 5 years ago

デバッグモードで起動すると無言で終了してしまうのは
core/mui/cairo_cell_renderer_message.rb

      if Mopt.debug
        raise e end

http://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/bb6cd76e9ac8855073a91e0c130265c8e720fb0e/entry/core/mui/cairo_cell_renderer_message.rb#L135
で終了してるっぽいです。上記2行をコメントアウトするとデバッグモードでも継続します。
で、notfoundが原因なんですかね。

#4

Updated by Izumi Tsutsui over 5 years ago

上記の cairo_cell_renderer_message.rb の exception を notice で表示してみたところ

notice: {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:136:in 
 `rescue in message_id=': undefined method `user_obj' for nil:NilClass
from {MIKUTTER_DIR}/tsutsui/mikutter/core/message.rb:303:in `retweeted?'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:196:in `iob_icon_pixbuf_off'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:51:in `block (3 levels) in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:48:in `times'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:48:in `block (2 levels) in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:47:in `times'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:47:in `block in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:45:in `save'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:45:in `render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:387:in `render_main_icon'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:369:in `render_to_context'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:341:in `gen_pixmap'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:347:in `gen_pixbuf'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:122:in `pixbuf'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:153:in `render_message'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:132:in `message_id='
from {MIKUTTER_DIR}/tsutsui/mikutter/core/plugin/gtk/mainloop.rb:10:in `main'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from mikutter/mikutter.rb:62:in `boot!'
from mikutter/mikutter.rb:80:in `<main>' 

ということで、認証していないのに retweet (とふぁぼられ?)のステータスを見に行って
失敗しているんでしょうか。

認証していない状態でも表示されるmikutter_botさんに対しては
右クリックメニューでツイート関連操作が抑制されるのと同様に
マウスオーバーアイコンを出さないという仕様にするのがよい
という気もします。
(アイコンが表示されていない状態でも適当にふぁぼやRT部分のあたりを
クリックすると落ちる)

全然関係ありませんが、ログの {MIKUTTER_DIR} のプライバシー保護(?)機能が
ちゃんと働いていないような……。
元の起動ディレクトリが /home/tsutsui/mikutter/mikutter.rb なので
親ディレクトリの先頭しか置き換えていないとか?

#5

Updated by Izumi Tsutsui over 5 years ago

添付のパッチのように適当にいじって
system message の場合は render_icon_over_button() を呼ばないようにすると
一応DRキャンセルプラグイン有効でもチュートリアルの表示は出て認証まで行けました。

が、表示しないだけでふぁぼやRTボタン自体は有効のままっぽいので、
認証前にmikutter_botさんアイコンのふぁぼやRTに相当する部分を押すと落ちます。
また、リプライ部分を押すとリプライ入力ができてしまいます。
(試してませんがそのまま投稿すると落ちる?)

どうしたもんでしょう。

#6

Updated by toshi_a 初音 over 5 years ago

ありがとうございます!コメント3の件は、どこで死んでいるのか原因が分からなかったのですが、これで漸くわかりました。Serviceが無いことを考えていないコードが、DRプラグインで隠れていたんですね。
頂いたパッチについては、コアの方でServiceが無い時の現在の動作は明らかに間違いなので、そちらがどういう挙動をすべきか検討して実装します。

#7

Updated by toshi_a 初音 over 5 years ago

  • Status changed from 実装待ち to レビュー待ち
  • Assignee changed from toshi_a 初音 to Izumi Tsutsui

対応しました。
Message#retweeted? と Message.favorited? が、アカウントがない時に常にfalseを返すようにしてクラッシュしないようにしました。
また、システムメッセージにはアイコンオーバボタンを表示しないという件については、確かにシステムメッセージにこれを表示する意味はないので、頂いたパッチを基に表示しないようにしました(c7f0b820)。

#8

Updated by Izumi Tsutsui over 5 years ago

  • Status changed from レビュー待ち to 解決

1d3e7979 相当で確認してDR無効プラグインありで認証まで通るのを確認しました。
ありがとうございます。

#9

Updated by toshi_a 初音 over 5 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF