CProcessFactoryを廃止してサクラエディタをシンプルにする #1531
berryzplus
started this conversation in
Ideas
Replies: 1 comment 1 reply
-
今の各プロセスがUIを持って、共有メモリを誰でも書き換えられる構造だと、確かにコントロールプロセスの存在意義がなんだかあやふやな気がしていました。 個人的には冒険的な考えもありまして、コントロールプロセスがすべてのウィンドウを保有して、エディタプロセスはドキュメントの管理に特化する、初期の Google Chrome のような設計も考えられるのではないかなと。 タブバーの挙動が怪しい問題の根本的な解決策になりますが、実装がそこそこ大変、リリースできる品質にするのは死ぬほど大変という欠点があります…。 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
概要
サクラエディタのプロセス起動の肝であるCProcessFactoryを廃止できないか検討します。
経緯
CProcessFactoryというクラスがあります。
sakura.exeの起動直後にコマンドラインパラメータを解析し、
妥当な「プロセスクラス」のインスタンスを生成して
起動したプロセスクラスの動作要件を整える役割のクラスです。
現在のサクラエディタは、CProcessFactoryが生成する
コントロールプロセス(=共有メモリを確保するプロセス)と
エディタプロセス(=一般の人が「サクラエディタ」と認識するウインドウを表示するプロセス)とを
協調させながら動作する「システム」になっています。
テキストエディタを動作させるのに「システム」が必要かというと、必要でないのは明らかだと思います。
サクラエディタがこのような「システム」を必要としている理由は、
sakura.iniから読み込んだデータを仮想メモリ空間にマッピングしてプロセス間で共有させる仕組みを採っているからです。
単純に「廃止」だけを考えてしまうと、今までできていたことの一部ができなくなってしまいます。
代替方式を探して導入し、共有メモリの機構を新方式に置き換えます。
代替方式があれば「コントロールプロセス」を廃止できるようになるので、そのためのCProcessFactoryも役目を終える感じになります。
ちょっと道のりが長そうなので、まずはやりたいことだけを書いてみました。
今後は共有メモリ(=DLLSHAREDATA)を廃止する方向で動こうと考えていますが、廃止できない理由とかあったら教えてください。
Beta Was this translation helpful? Give feedback.
All reactions