Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

コマンド実行時のターミナルの描画の改善 #57

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

mikecat
Copy link
Contributor

@mikecat mikecat commented Aug 12, 2022

fix #50

ターミナルでのコマンドの実行時、カーソルの移動後コマンド本体の実行開始前にターミナルを再描画します。

これにより、cat コマンド、 hex2bin コマンド、large コマンド (いずれも引数なし) などの実行時、
Enterキーを押しても画面が変わらず、入力が効いていないという誤解を発生させるのを防ぎます。

この誤解により、cat コマンドの実行時余計にEnterキーを押してしまい、余計な改行が入ることを誘発する、などの害が考えられます。

After this commit, the terminal will treat the layer id 0 as invalid.
Therefore, layer.cpp is also edited not to generate layers with id 0.
kernel/layer.cpp Outdated
@@ -69,6 +69,7 @@ void LayerManager::SetWriter(FrameBuffer* screen) {

Layer& LayerManager::NewLayer() {
++latest_id_;
if (latest_id_ == 0) ++latest_id_;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この変更の意図は何ですか?
latest_id_ は unsigned int だから、インクリメントして 0 になる場合はオーバーフローのケースなんですが、
オーバーフローをケアするのであればもっと別の対処をする必要があると思いますが。
現在は unsigned int はオーバーフローしないだろうという仮定のもと、ケアしない選択をしています。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レイターID 0 を「無効」と定義するため、0は有効なレイヤーIDとして確実に使われないようにするために入れました。
確かに「じゃあID 1 なら被っていいのか?」というとよくなさそうなので、
panicの機能があればpanicにするのが良さそうですね。
現状panicは無さそうなので、対策なしに戻します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

コマンド実行時のターミナルの描画の改善
2 participants