TortoiseHg Windowsシェル拡張手放し作戦その3

ってことで、
http://bitbucket.org/tortoisehg/stable/annotate/28343fb4243c/win32/shellext/QueryDirstate.cpp#line-256
が実際の読み込み開始ってことで、この前に環境変数を読むのを入れて、実装は終了。
デバッグ文を入れたら思った以上にガンガン呼ばれている。
あと、順番的には.hg/dirstateが先かと思うのだが、.hg/thgstatusが先に呼ばれている。
アイコンを表示させないという機能があるからだろう。
で、ここが.hg/thgstatusの本体なのだが、
http://bitbucket.org/tortoisehg/stable/annotate/344eed191f83/win32/shellext/DirectoryStatus.cpp#line-149
思ったよりも安直な作り。
2秒経たないと読みにいかないし、キャッシュも1つのディレクトリしか持っていない。
ディレクトリのアイコンの更新が遅いな、と思った理由はこれですか。

で、.hg/dirstateの方はこの作りじゃまずいだろうってことで本体はここ。
http://bitbucket.org/tortoisehg/stable/annotate/344eed191f83/win32/shellext/Dirstatecache.cpp#line-33
ざっとみたところ、リストのキャッシュを持っているし、ファイルのタイムスタンプもチェックしている。