[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 2058] Re: Xlib interfaceの存在価値 (was: BTK)



平松です。

From: Ryuichi Naitoh <naitoh_r@soft.hitachi.co.jp>
Subject: [b-free: 2054] Re: Xlib interfaceの存在価値 (was: BTK)
Date: Mon, 07 Sep 1998 17:47:20 +0900 (JST)

> > > X がアプリケーションから見えたり、使えるようにするにはそれなりの労力が
> > > 必要です。具体的には、Xlib に相当するものを作成しないとアプリケーショ
> > > ンから X を使うことはできません。そういうものを作らない場合、アプリケー
> > > ションからは X は「見えない」ということになります。

「X がアプリケーションから見える」というのは、X サーバに窓を作れ、とか
線を引け、といった指令を送るということですよね。X サーバとアプリケー
ションは X Protocol とかいうプロトコルを使って通信してまして、
クライアント(つまりアプリケーション)からサーバへ「色を変えろ」等の
命令が送られて実際にサーバが動作します。で、ほとんどX Protocol への
ラッパー(?) なのが Xlib です。

> > > アプリケーションから X が見えない -> 何もする必要はない
> > > アプリケーションから X が見える   -> X を使えるような作業が必要
> > > 
> > > ということですね。

アプリーションが X サーバと通信できるためには、何らかの形で X Protocol
へのインターフェースが必要になると思います。今の所主流は Xlib なんです
けどね。

> > > そこで、公開するための労力をかける必要はないというのが私の意見です。

個人的には Xlib も使えた方がいいのでは? と思います。今 X 上にあるソフト
が移植しやすくなる……というか、X 用の GUI ライブラリが 移植しやすくなる
と思うんですが。

> なになに.so っていうのは、dynamic link library のことでしょうか?
> とすると、X11.so っていうのは、X11 サーバの dynamic link library です
> か?
> でも、これって可能ですか? X11 サーバをライブラリ化するようなことが。
> 
> # x11.so が X11 のサーバを呼び出すライブラリだとすると、次の文の意味が
> # 通らなくなってしまうので、X11 サーバ自身のことだと思います。

次の文の「X が、動きますよね」の真意は「X のソフトが動きますよね」だと
考えると「移植をしている間に他の所で開発した manager 達があっさりのる」
も分かりやすいような気がしますけど。display primitive だけでなく、Xlib
もあれば他の manager も動く、と。

> > それなら、X11.soの OS依存のとこだけ修正して、B-FreeOSにのるようにしてしまえば、
> > X が、動きますよね。そうなれば、移植をしている間に他の所で開発した manager 達が
> > あっさりのると思っていました。
> 
> X11 サーバは、プロセス(かそれに類するもの)上で動くことが前提なので、
> dynamic link library として動かすのは、難しいのではないかと思います。
> 
> X11 以前のウィンドウ機能(Sun View とか) では、ライブラリ上に実装されて
> いた例もあると思いますが、X11 はそういう作りではないです。

ライブラリになってしまっては「クライアント・サーバ」が出来ませんね。

> > > たとえば、ディスプレイプリミティブが独自の管理情報をもっている場合、問
> > > 題があると思います。これは、アプリケーションから X を使えるようにした
> > > 場合でも問題になりますが。
> > 
> > 自分が思っていた方法なら、display primitiveの情報はもちろん API を通して
> > 受け取ります。たとえ Xlibを直接使ったからと行って display primitive API 
> > に、accessできないわけではないですから。
> 
> いや、だからアプリケーションが Xlib に直接アクセスすると、ディスプレイ
> プリミティブの内部情報と X サーバ側とで不一致が生じるんじゃないですか?
> これは、アプリケーションがディスプレイプリミティブを呼び出せるとしても
> 解決できません。

display primitive と Xlib は同時に使ってはいけない、ということにしては
どうでしょう……って、そんな問題ではない?

> > display primitiveがlibraryでも情報を持つことになりますか?
> 
> えーと、ディスプレイプリミティブはライブラリで実装できるんでしょうか?
> 
> プロセス間で共有する情報(システム内で共有している情報)はないですか?
> それがあると、ライブラリとしてディスプレイプリミティブを実装するのは
> 難しいでしょう。

おそらくここでは display primitive を Xlib 上のライブラリとして実装
できない、とおっしゃっていると思うのですが、それでは display primitive
を X Protocol を直接やり取りするライブラリとして作るということでしょう
か。でもこれでは、結局「ライブラリ」になってしまいますね。Xlib 以上の
ことはできません。

そんなわけで、「プロセス間で共有する情報」を何とかするには、X Protocol
自体を拡張した上で、display primitive を X Protocol で通信するライブラリ
にするというのがいいのではないかと思います。X サーバに新たな機能が付け加
わるわけですね。またはウィンドウシステムに X を使うのはやっぱりやめる、
とか。

できれば Xlib 上に作った方が楽だとは思いますが……。

私の書いた所には間違いがあるかも。私は X をよく知ってるわけではないし、
ディスプレイプリミティブはもっと知らないのです。

//平松祥史(Hiramatsu, Yoshifumi)
//hiramatu@cdrom.co.jp