バグ #26
closedPCがスリープから復帰した後操作を受け付けない
100%
Description
version 0.44 で発生を確認した。
Windows10 PC上で、AbilityTimerを起動させたままPCをスリープ状態にし、復帰させると、AbilitiTimerがマウスによる操作を受け付けない状態になる。
タスクバーを使ってAbilityTimerのウィンドウをいちど最小化し、元に戻すと、チェックボックスが1つだけ表示されたウィンドウになる(操作を受け付けないのは変化なし)。
Updated by mole lord about 4 years ago
スリープから復帰しても、問題なく動作することがあった。
単純にスリープまたは復帰が問題なのではなく、長時間操作が無いことがトリガになっているのかもれない。
Updated by mole lord about 4 years ago
異常な状態になってもウィンドウを閉じたときにsave.csvを作る機能は正常に動作している。
Updated by mole lord about 4 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)
Updated by mole lord about 4 years ago
マウスカーソルが存在しなくなると MouseInfo.getPointerInfo()がnullを返すのかもしれないと思い、USBマウスを引っこ抜いてみたが、特に何も起きなかった。
Updated by mole lord about 4 years ago
MouseInfo.getPointerInfo().getLocation()をtry{}で囲んでみたところ、PCをスリープにする操作の時点から復帰のあとまでの間に、少なくとも40回以上もNullPointerExceptionが発生していることが分かった。
Updated by mole lord about 4 years ago
- Status changed from 進行中 to 終了
- % Done changed from 50 to 100
MouseInfo.getPointerInfo() の戻り値がnullでないことをチェックするように修正した。
de520e8 でコミットした。