HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
V1.5
DECwindows Motif for OpenVMS Version 1.5 にはアップデートされた OSF/Motif Release 1.1.3 共有ライブラリ一式が含まれていますが, OpenVMS I64 プラットフォームでは Release 1.1.3 ベースの UIL コンパイラあるいは関連する C ヘッダ・ファイル一式は含まれていません (これはDECwindows Motif for OpenVMS Alpha の最近のリリースと同様です)。
OpenVMS I64 環境の Release 1.1.3 イメージをベースにしたアプリケーションのネイティブ・ビルドの方法は以下のとおりです。
4.3.3.3 Motif Release 1.1.3 コンパイルおよびランタイムに関する制限事項
V1.2--3
以前のプログラミング環境 (Release 1.1.3) を保存した上で, Motif Release 1.1.3 ターゲット・システム上の実行ファイルから, DECwindows Motif Version 1.2 が動作しているシステム上で作成した OSF/Motif Release 1.1.3 (Xlib Release 4) アプリケーションを実行しようとすると,問題が発生します。これは,DECwindows Motif V1.2 以降が動作しているシステム上でアプリケーションを作成すると,省略時の設定によりイメージはXlib Release 5 にリンクされるためです。 OSF/Motif Release 1.1.3 がインストールされているシステムでこの実行ファイルを実行しようとすると, ident ミスマッチの fatal エラーとなります。
また,OSF/Motif Release 1.1.3 の UIL コンパイラと Release 1.2.2 の UIL コンパイラでは異なる出力を生成します。それぞれ構造が異なるため,互換性はありません。適切な UIL コンパイラを使用して正しい UID を生成してください。
これらの問題の発生を回避するために,次の操作を行ってください。
4.3.4 カスケードおよびトグル・ボタンにおけるメモリ・リークの解決 (Alpha のみ)
V1.5
DECwindows Motif for OpenVMS Version 1.2--4 以上のシステムでカスケードあるいはトグル・ボタンを作成し,そのあと消滅した場合,使用されていないグラフィックス・コンテキスト・オブジェクトが後に残ります。これらのオブジェクトは,クライアントおよびサーバの両方のメモリ・リークの結果発生するもので,クライアントが終了するまで存続します。
この問題は,あるグラフィックス・コンテキストについては normal 状態でウィジェットが関与し,別のグラフィックス・コンテキストについては armed 状態でウィジェットが関与する場合に発生します。通常の使用環境では,ほとんどのウィジェットは同じカラーを共有するため,一組のグラフィック・コンテキストを共有します。メモリ・リークは,異なる背景色あるいは選択テキストで多くのウィジェットが作成され消滅した場合に,多く発生します。
この問題は DECwindows Motif for OpenVMS Version 1.5 で解決されています。
4.3.5 Bulletin Board におけるメモリ・リークの解決 (Alpha のみ)
V1.5
DECwindows Motif for OpenVMS Version 1.2--4 以上のシステムでは, BulletinBoard ウィジェットが作成され, XmNbuttonFontList,XmNlabelFontList,あるいは XmNtextFontList リソースに対してデフォルトのフォント・リストが使用された場合,そのフォント・リスト・エントリに対する参照カウントが間違ってキャッシュされていました。これは,そのフォント・リストが必要なくなった場合に,そのフォント・リストに使用されたメモリを解放するのを妨げる原因となります。
この問題は,デフォルトのフォント・リストがその後変更された他の bulletin board あるいはベンダーのシェル・ウィジェットの子孫として,bulletin board が作成された場合に発生します。
この問題は, DECwindows Motif for OpenVMS Version 1.5 で修正されています。
4.3.6 Motifヘッダ・ファイルでのコンパイル時の非互換性
V1.2--3
OSF/Motifプログラミング・サポートで Motifヘッダ・ファイルからマクロ定義がいくつか削除されています。この変更は次のヘッダ・ファイルに影響します。
上記マクロに代えて,次のマクロが同じヘッダ・ファイルに挿入されています。
MAXINTの定義はオペレーティング・システムに依存します。次のいずれかの方法でアプリケーションにこの定義を組み込んでください。
OSF/Motif ツールキットは,多くの「内部専用」ルーチンで実現されています。これらのルーチンは_Xmで始まり,標準Motif ウィジェットだけが使用するようになっています。 API (Application Programing Interface)については文書化されておらず, OSFではこれらのルーチンをサポートしていません。 OSF社はAPIを変更して新しい_Xm ルーチンを追加し,現在の_Xm ルーチンを削除し,あらゆる_Xm の機能性の変更を警告や予告なしに行う権利を保有しています。
弊社では,_Xm ルーチンを複写して, OSF/Motif リリース 1.2.2 ツールキットの共有可能イメージ転送ベクトルに置くことによって, _Xm ルーチンへアクセスできるようにしています。弊社では,これらのルーチンについて,その使用,ドキュメント,またはサポートを保証していません。これらの機能を使用するユーザは,ご自分の責任で行ってください。 |
Motif のサンプル・プログラムが使用する UID ファイルは,現在のディレクトリ,DECW$SYSTEM_DEFAULTS,またはユーザのDECW$USER_DEFAULTS ディレクトリに入れておかなければなりません。 DECwindows Motif は, DECNET (DECnet あるいは DECnet-Plus) トランスポートによるリモート UID のアクセスはサポートしていません。このため,デフォルト・ディレクトリはノード名指定をサポートしません。 UID ディレクトリ指定でノード名を入力するとアプリケーションの起動に失敗し,次のようなエラーが表示されます。
X Toolkit Warning: I18NOpenFile: Could not open file decburger.uid - MrmNOT_FOUND can't open hierarchy |
UID ファイルは DECW$EXAMPLES ディレクトリからコピーできます。リモート UID ファイルにアクセスするには,クラスタのローカル・ノードへファイルをコピーするか,Distributed File System (DFS) を使用してクラスタ上のファイルを含むディスクをマウントします。
4.3.9 Motif テキスト・ウィジェットの変換
仮想バインディングを実現するには,弊社が省略時のXmText および XmTextField の変換マネージャ構文を変更する必要がありました。特に,次の設定が削除されています。
Shift ~Ctrl ~Meta ~Alt <Key>osfDelete: cut-clipboard() |
osfCut仮想keysymがバインドされていない仮想バインディングを使用すると,省略時の設定で,cut-clipboard 動作のキー・シーケンスはバインドされません。この制約に対処するには, DECW$XDEFAULTS.DATファイルでXmTextおよびXmTextField のトランスレーションをオーバーライドしてください。
4.3.10 Motif ウィジェットと XUI ウィジェットの混合に関する制約
MotifウィジェットとXUIのウィジェットの混合には制限があります。問題の原因は, XUIとMotifの両方がそれぞれ独自のVendor Shell ウィジェット・クラスを持っていることにあります。アプリケーションがMotifではなくXUIに対してリンクされると, XUI Vendor Shell ウィジェット・クラスが, DECwindows XUIとの互換性を保つために使用されます。アプリケーションがMotifに対してリンクされたときは, Motif Vendor Shell ウィジェット・クラス使用されます。 Motif ウィジェットはMotif Vendor Shellを必要とし, XUI ウィジェットはMotif Vendor Shellとの互換性があります。問題が発生するのは, XUI専用アプリケーションがMotifを使用する共有可能イメージを (LIB$FIND_IMAGE_SYMBOLを使用して)動的に起動したときです。ツールキットが初期化されたときに,動的に起動された共有可能イメージでMotif ウィジェットが動かない場合は,ツールキットは XUI Vendor Shellを使用するよう決定します。
この問題に対処するには,アプリケーション・イメージ名をDECW$USE_XM_VENDOR_SHELL論理名に加える方法があります。この論理名には,ツールキットがMotif Vendor Shellを使用するイメージ名を,コンマで区切って並べてあります。 DECW$USE_XM_VENDOR_SHELL 論理名の値は省略時の設定でNOTES$MAINとなっています。さらにイメージ名をこの論理名に追加するには,次のコマンドを入力します。
$ DEFINE DECW$USE_XM_VENDOR_SHELL "NOTES$MAIN,- _$ yourimage1,yourimage2,..." |
Motifを使用するアプリケーションは,すでにMotif Vendor Shellを使用しているため, DECW$USE_XM_VENDOR_SHELLの影響は受けないことに注意してください。
4.4 Motif に対する DECwindows 拡張 (DXm)
この節では,Motif ツールキットに対する DECwindows 拡張について説明します。
4.4.1 DXmFormSpaceButtonsEquallyの制限
ウィジェットやガジェットが
XmLabelまたは
XmLabelGadgetのいずれかのサブクラスを持っている場合は,
DXmFormSpaceButtonsEqually(便宜ルーチン) がすべて平等にそのサイズとスペースを決定します。しかし,ウィジェットやカジェットが
XmLabelや
XmLabelGadgetのサブクラスではない場合は,結果は不確定です。
4.4.2 水平方向のライブ・スクロールをサポートしていない SVN ウィジェット
水平方向のライブ・スクロールは, SVN ウィジェットではサポートされていません。
4.5 X Window System ツールキット (Xt)
この節では,X Window System ツールキット (Xt) についての注意事項を説明します。
4.5.1 XtGetValues 関数とヌル引数値
V1.3
XtGetValues および XtVaGetValues 関数は引数配列で引数値を提供します。 Xt の仕様では,引数構造体の値メンバは適切なサイズのオブジェクトをポイントしなければならないと定義しています。しかし Xt の実装では,引数値が 32 ビット長を越えないという条件付きで,ヌル値のメンバを渡すことを許しています。この場合,Xt は引数値メンバに引数値を直接書き込みます。
DECwindows Motif Version 1.3 以降のシステムでもこの機能はサポートしますが,ヌル値メンバを検出すると次のような Xt 警告メッセージが生成されます (function_name は XtGetValues あるいは XtVaGetValues のいずれかになります)。
X Toolkit Warning: NULL ArgVal in function_name
|
アプリケーションのコンパイルあるいは実行時にこのメッセージが表示されたら,アプリケーションを修正して,ヌル・メンバ値の使用をやめてください。
4.5.2 複合クラス拡張レコードの実行時警告
X11R6.6 では,ブール値オプション allows_change_managed_set がデータ構造体 CompositeClassExtensionRecに追加されました。このデータ構造体が変更された結果,以前のバージョンの CompositeClassExtensionRecでビルドされたアプリケーションでは,次のような警告メッセージが実行時に表示されることがあります。
X Toolkit Warning: widget class Calc has invalid CompositeClassExtension record. |
このメッセージが表示されないようにするには,最新バージョンの CompositeP.h ファイルを使用してアプリケーションをビルドし直します。新しいオプションの値が適切かどうか確認してください。メモリがゼロに初期化された場合,以前と同じように動作します。初期化されていない場合の動作は予測できません。
4.5.3 XtOpenDisplay ルーチンと大文字/小文字の区別
XtOpenDisplay のアプリケーション名が,コマンド・ラインに入力されたアプリケーション名を表す argv[0] からきている場合があります。
この場合,大文字/小文字の区別が保持されなければならない環境 (大文字/小文字の区別を有効にしてODS-5 システムを参照したり,ユーザ定義の argv リストを渡す場合など) では,問題になることがあります。
4.6 X Window System ライブラリ (Xlib)
この節では,X Window System ライブラリ (Xlib) の情報について説明します。
4.6.1 XPutImage による大きなグラフィック・イメージの正しい表示
V1.5
XPutImage 内の間違ったエラー条件は修正されています。このため,この再帰的な Xlib プロシージャを呼び出すアプリケーションでは,目立ったクリッピングやスタック・オーバーフローが発生することなく,大きなグラフィック・イメージの処理および描画を正しく行うようになりました。
4.6.2 Xlib ルーチンによる再帰的ロックの使用
V1.5
マルチスレッド Xlib アプリケーションで実装される表示ロックが再帰的ロックとして実装されるようになりました。スレッド機能が有効な場合, XCheckIfEvent,XIfEvent,あるいは XPeekIfEvent に対するすべての呼び出しは,XLockDisplay/XUnlockDisplay のペアに入れられます。これにより,上記のイベントにより述語関数が呼び出された際に単一スレッド内でデッドロックが発生するのを防ぎます。
再帰的ロック機能がないと,たとえば,スレッド対応の Motif アプリケーションや awt ライブラリを使用する Java アプリケーションでデッドロックが発生します。
4.6.3 XOpenDisplay および XCloseDisplay におけるメモリ・リークの解決 (Alpha のみ)
V1.5
表示接続のオープンおよびクローズ時に小さなメモリ・リークが発生する問題は解決されています。この結果,多くの接続をオープンおよびクローズするクライアント・アプリケーションが,多くの仮想ページを必要とすることなく,少ないページ・ファイル・カウントおよびチャネル・カウント・クォータで機能します。
| 前へ | 次へ | 目次 | 索引 |