Bug-org 981951 We should remove following char message immediately after we find it at handling keydown message
 初回投稿日時: 2014-03-11 12:44:28
カテゴリ: Mozilla Core Mozilla28 Mozilla29 Mozilla30 Windows バグ修正 
SNS: 
	Tweet (list)
	
mozilla::widget::NativeKey::RemoveFollowingCharMessage()は、keypressイベントの生成処理の流れの中で、自然なタイミングで呼び出されてました。しかし、このメソッドがメッセージ処理の最中に、ありえない状況が発生しているということは、他のスレッド等からメッセージキューに変更が加えられている可能性があります。そこで、メッセージを発見してから削除するまでの魔の時間を可能な限り短くするため、mozilla::widget::NativeKeyGetFollowingCharMessage()というメソッドに改名し、メッセージの存在を確認した直後に、それをキューから削除し、戻り値として引数経由でその削除したメッセージを返し、必要としているメソッドへ引数として渡すように修正しました。
なお、PeekMessage()でメッセージを削除する際に、キーメッセージにその対象を限定していても、WM_NULLが削除されるという不思議な挙動がMetroFirefox上でのみ見られたので、PeekMessage()がWM_NULLを削除した場合には最高で5回までリトライするようにしています(その後のクラッシュレポートのログを見た限りでは2回以上していることは無さそうですが)。
なお、この修正により、クラッシュのシグネチャが[@ mozilla::widget::NativeKey::GetFollowingCharMessage(tagMSG&)]に変更されていることに注意してください。