Project

General

Profile

バグ #26

PCがスリープから復帰した後操作を受け付けない

Added by mole lord almost 2 years ago. Updated almost 2 years ago.

Status:
終了
Priority:
通常
Assignee:
Start date:
01/15/2019
Due date:
% Done:

100%

Estimated time:

Description

version 0.44 で発生を確認した。

Windows10 PC上で、AbilityTimerを起動させたままPCをスリープ状態にし、復帰させると、AbilitiTimerがマウスによる操作を受け付けない状態になる。

タスクバーを使ってAbilityTimerのウィンドウをいちど最小化し、元に戻すと、チェックボックスが1つだけ表示されたウィンドウになる(操作を受け付けないのは変化なし)。

#1

Updated by mole lord almost 2 years ago

スリープから復帰しても、問題なく動作することがあった。

単純にスリープまたは復帰が問題なのではなく、長時間操作が無いことがトリガになっているのかもれない。

#2

Updated by mole lord almost 2 years ago

異常な状態になってもウィンドウを閉じたときにsave.csvを作る機能は正常に動作している。

#3

Updated by mole lord almost 2 years ago

  • Status changed from 新規 to 進行中
  • % Done changed from 0 to 50

Processing上で動かした状態でPCをスリープさせ、復帰させたところ、Processingのウィンドウに以下の表示が出た。
GuiItem.isOver()メソッドの中の、Point mouse = MouseInfo.getPointerInfo().getLocation();
がNullPointerExceptionを起こしているようだ。

java.lang.NullPointerException
    at AbilityTimer$GuiItem.isOver(AbilityTimer.java:94)
    at AbilityTimer$TimerBar.render(AbilityTimer.java:168)
    at AbilityTimer.draw(AbilityTimer.java:607)
    at processing.core.PApplet.handleDraw(PApplet.java:2429)
    at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1557)
    at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
#4

Updated by mole lord almost 2 years ago

マウスカーソルが存在しなくなると MouseInfo.getPointerInfo()がnullを返すのかもしれないと思い、USBマウスを引っこ抜いてみたが、特に何も起きなかった。

#5

Updated by mole lord almost 2 years ago

MouseInfo.getPointerInfo().getLocation()をtry{}で囲んでみたところ、PCをスリープにする操作の時点から復帰のあとまでの間に、少なくとも40回以上もNullPointerExceptionが発生していることが分かった。

#6

Updated by mole lord almost 2 years ago

  • Status changed from 進行中 to 終了
  • % Done changed from 50 to 100

MouseInfo.getPointerInfo() の戻り値がnullでないことをチェックするように修正した。
de520e8 でコミットした。

Also available in: Atom PDF