elkurin’s blog

銀英伝はいいぞ

えるくりん月報 2024年2月号

2月はカスでした。

Bubble Clippingと俺のストレス値大爆発

1月号でも書いたBubble Clippingのプロジェクトが"終わった"と共に関連で今まで溜まっていたストレスがついに爆発した。何を書いても攻撃的な発言になってしまいそうなので、何も言うまい。

よく頑張った。

 

Window State と Insets を configure-sync しよう

Configure-SyncとはChromium Wayland上でサーバーとクライアントの間でstateを頑張って同期するためのシステム。

Waylandでは、サーバー側が認識しているウィンドウサイズを"configure"メッセージで送り、それを元にクライアント側が新しいframeをつくって"acknowledge"することで両者間のサイズを同期している。Ack後に来る次のbufferは同期されたやつと保証される。

逆にクライアントからサイズをrequestすることもできる。この場合、クライアントがサーバーに要求する->その要求を元にサーバーから"configure"が送られてくる->クライアントが"acknowledge"するという流れになる。サーバー側がクライアントの要求を拒否して、異なるサイズを送り返してくることもあることに注意。

Lacrosではサイズだけでなくウィンドウの位置やスケール、ウィンドウの状態(= Window State)などについても同期したい。

ウィンドウの位置をsyncするパッチを出したらLinux Waylandでテストが落ちてrevertされた。Window Stateの同期を先にやらないと現状のコード的にだめだったので、今はWindow StateのConfigure syncからサポートするパッチをレビュー中。

 

Browser Manager

ほぼ趣味でやってるみたいなプロジェクト。

LacrosバイナリをロードするのがBrowserLoader、プロセスを起動するのがBrowserLauncherで、BrowserManagerはこれら込みで全体を管理している。このあたりが自分の管轄になりつつあるのでいろいろ遊んでる。

例えば、Lacrosのバイナリのロード部分で、違うバージョン・チャンネルを使いたいなどの理由によりリロードが入ることがあるが、これが以前のロード中に割り込んでくると地雷を踏むので、それを直している。がReviewerが忙しいようで一向にReviewが進まない。お疲れ様です。

他にも無駄なDevice Ownership待機を消したり、今まで必要になったタイミングでやっていたPolicyの準備を可能になった(Primary Profileができた)タイミングに動かしたり、プロセス起動に必要な各種処理を並列にしたりした。

P0を起こしまくっているLacrosの起動のTest Coverageを増やしたいと自分は昔から主張していて、インターンさんの貢献もあり、ようやくテストを書けるくらいに実装が良くなってきた。

 

その他直したバグ

  • HitTestMaskの座標が間違っていたため、Google DocsなどのデカいquadがWindowの外にいるとその分の座標変換に失敗しTargetがおかしくなっていた。座標変換を正しくするパッチを出したら今度は他のプロダクトが壊れたが、それは向こうが直してくれた。感謝。
  • タブレットモードから出たときに設定ページの上の方にある最大化とか閉じるとかのボタンが出てこないバグ。これはimmersive fullscreenをON/OFFするAPIが一部意図せず無視されていた。TestやPerformanceの目的のため、immersive fullscreenをON/OFFするAPIは現在の状態とON/OFFが同じなら無視しているが、それだと非同期処理に対応できない(e.g. ONにするAPIを呼ぶ->非同期的にONにする処理をやってる最中にOFFにするAPIを呼ぶ のときまだ現状はONになっていないので現在の状態と同じと判定され2個目の呼び出しが無視される)。それを直すために、直近のrequestの状態を記憶する変更を以前入れたんだが、これが一部の変なパスからのimmersive fullscreen requestをキャッシュしていなかったので壊れた。
  • 古いバージョンをサポートするために書いていた座標変換系の諸々を消した。もともいろんなものが絶対座標で送られていたが、親からの相対座乗を座標をLacrosから送る形式に変えた。

 

ストレスがヤバすぎて5kg太った

マジで困ってる。

 

アダム・ランバートのライブに行った

人生初ライブ。

世間的にはクイーンのライブと言われているが、アメリカン・アイドルをリアルタイムで見ていた世代である自分にとってはアダム・ランバートのライブ。さすがの歌唱力で圧巻だった。

遠すぎてなんも見えん

 

ダンガンロンパV3をクリアした

シリーズの中で一番好きだった。

賢いキャラ・議論回すのがうまいキャラが多くて、今までならお馬鹿な賑やかし枠になりそうなキャラもしっかり考えて議論に参加していて、裁判が超面白かった。

主人公も1,2,3の中で圧倒的に好き。サイコパス天才探偵。

最初から最後まで王馬を信じて戦い抜いた。一片の悔いなし。

2章の死体でたときはガチギレしてた。

 

クリアしてからはFEエンゲージ2周目を再開した。厳しい縛りでやっていて今25章なので、またクリアしたら記事を書こうかな。

 

マーダーミステリーが面白い

ハマりつつある。15人+GMとかいうてんやわんやのマダミスを最近やった。

シナリオ作る側にも興味ある。

 

良かった飯

美味しいスコーンと紅茶。昼はティーサロンで夜はバーらしい。おすすめ。

maps.app.goo.gl

BITTERS END CLUB

 

久々の銀英伝カフェ

久々にイゼルローンフォートレスカフェに着任した。その場のノリでヤンの肖像画買っちゃった。

偶像崇拝を嫌うヤンへのささやかな嫌がらせ。

 

確定申告

してない。まずい。

 

Rust練習帳をすすめてる。

CommandLine Toolをつくってる。

www.oreilly.co.jp

 

今月のT1

強い。

何が強いってFakerのレーンスタッツがエグい。Chovyを抜いてLCK最強のスタッツしてる。

T1全体としても低順位のチーム相手だと怪しいが、強いチーム相手にはビシッと勝つのでOK。GenGも絶好調だし来るGenG戦が楽しみ。

しかしDDoS攻撃によりLCKが妨げられていて悲しい。やめてけろ。

 

今月の elkurin-daily-notes

今月はちょいちょいストレスでサボった。そういうときもあるね。

今月のベスト役に立つノート→

hackmd.io

 

一覧:

  1. Protected Sequence Synchronizer - HackMD
  2. GPU同期 in Chrome - HackMD
  3. Layer / window correspondence in Chromium - HackMD
  4. ScopedPathOverride - HackMD
  5. Shadow on Linux Chrome - HackMD
  6. Barrier Closure - HackMD
  7. ScopedClearLastError in base - HackMD
  8. State transitions in base - HackMD
  9. base::Environment in base - HackMD
  10. std::optional の operator - HackMD
  11. Overview session in ChromeOS - HackMD
  12. WaylandFrame and WaylandFrameManager - HackMD
  13. When we produce new frame - HackMD
  14. このブログ

総括

今月はのんびり働いた。

  • Week 1:Bubble Clippingプロジェクトに全力
  • Week 2:ストレス爆発
  • Week 3:だんだん復活
  • Week 4:やりたい仕事を好きにやってる

 

今月もオツカレ!