日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


≫ 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:一般ユーザ向けリリース・ノート
第 2 章:システム管理者向けリリース・ノート
第 3 章:プログラミングに関するリリース・ノート
第 4 章: 関連ドキュメントに関するリリース・ノート
第 5 章:日本語機能に関するリリース・ノート
付録 A :OSF/Motif リリース 1.2 リリース・ノート
付録 B :OSF/Motif サンプル・プログラム
索引
PDF
OpenVMS ホーム
日本語 HP DECwindows Motif for OpenVMS

日本語 HP DECwindows Motif
for OpenVMS
リリース・ノート


目次 索引



この節では,Motif ツールキットに対する DECwindows 拡張について説明します。

3.4.1 DXmFormSpaceButtonsEquallyの制限

V1.1

ウィジェットやガジェットが XmLabelまたは XmLabelGadgetのいずれかのサブクラスを持っている場合は, DXmFormSpaceButtonsEqually(便宜ルーチン) がすべて平等にそのサイズとスペースを決定します。しかし,ウィジェットやカジェットが XmLabelXmLabelGadgetのサブクラスではない場合は,結果は不確定です。

3.4.2 水平方向のライブ・スクロールをサポートしていない SVN ウィジェット

V1.0

水平方向のライブ・スクロールは, SVN ウィジェットではサポートされていません。

3.5 X Window System ツールキット (Xt)

この節では,X Window System ツールキット (Xt) についての注意事項を説明します。

3.5.1 DECwindows での XtAppAddTimeOut( ) の実装の問題

V1.6

DECwindows での XtAppAddTimeout( ) の実装方法に問題があり,システム時刻を早い時刻に変更した (遅らせた) 場合 (たとえば,DST から STD 時刻への移行など),時刻の差分がタイマに加算されます。たとえば,10 秒のタイマがセットされ,システム時刻が DST から STD に変更された場合,このタイマは期待されている 10 秒後ではなく, 1 時間 10 秒後にタイムアウトします。

3.5.2 XtRemoveTimeOut() に NULL 引数を渡すとアクセス違反が発生する問題

V1.6

XtRemoveTimeOut 関数は XtAddTimeOut() 呼び出しから返されるタイマ ID を入力として受け取り,アプリケーションが XtRemoveTimeOut() 関数への入力としてゼロを渡すとアクセス違反が発生するという問題がありました。

この問題は,DECWindows Motif for OpenVMS Version 1.6 で修正されました。

3.5.3 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

アプリケーションのコンパイルあるいは実行時にこのメッセージが表示されたら,アプリケーションを修正して,ヌル・メンバ値の使用をやめてください。

3.5.4 複合クラス拡張レコードの実行時警告

V1.3

X11R6.6 では,ブール値オプション allows_change_managed_set がデータ構造体 CompositeClassExtensionRecに追加されました。このデータ構造体が変更された結果,以前のバージョンの CompositeClassExtensionRecでビルドされたアプリケーションでは,次のような警告メッセージが実行時に表示されることがあります。

X Toolkit Warning:  widget class Calc has invalid CompositeClassExtension 
record. 

このメッセージが表示されないようにするには,最新バージョンの CompositeP.h ファイルを使用してアプリケーションをビルドし直します。新しいオプションの値が適切かどうか確認してください。メモリがゼロに初期化された場合,以前と同じように動作します。初期化されていない場合の動作は予測できません。

3.5.5 XtOpenDisplay ルーチンと大文字/小文字の区別

V1.2--6

XtOpenDisplay のアプリケーション名が,コマンド・ラインに入力されたアプリケーション名を表す argv[0] からきている場合があります。

この場合,大文字/小文字の区別が保持されなければならない環境 (大文字/小文字の区別を有効にしてODS-5 システムを参照したり,ユーザ定義の argv リストを渡す場合など) では,問題になることがあります。

3.6 X Window System ライブラリ (Xlib)

この節では,X Window System ライブラリ (Xlib) の情報について説明します。

3.6.1 Motif のエラー - Xlib: Unexpected Async Reply の修正

V1.6

一部のアプリケーションには, AST を使用してプロセス・イベントを AST 内で処理するものがあります。これは,予期しない非同期応答エラーが X ライブラリから返される原因となります。この方法は良いプログラミング手法とは言えませんが,このような状況に対してもある程度対応できるように修正が行なわれています。

3.6.2 XPutImage による大きなグラフィック・イメージの正しい表示

V1.5

XPutImage 内の間違ったエラー条件は修正されています。このため,この再帰的な Xlib プロシージャを呼び出すアプリケーションでは,目立ったクリッピングやスタック・オーバフローが発生することなく,大きなグラフィック・イメージの処理および描画を正しく行うようになりました。

3.6.3 Xlib ルーチンによる再帰的ロックの使用

V1.5

マルチスレッド Xlib アプリケーションで実装される表示ロックが再帰的ロックとして実装されるようになりました。スレッド機能が有効な場合, XCheckIfEvent,XIfEvent,あるいは XPeekIfEvent に対するすべての呼び出しは,XLockDisplay/XUnlockDisplay のペアに入れられます。これにより,上記のイベントにより述語関数が呼び出された際に単一スレッド内でデッドロックが発生するのを防ぎます。

再帰的ロック機能がないと,たとえば,スレッド対応の Motif アプリケーションや awt ライブラリを使用する Java アプリケーションでデッドロックが発生します。

3.6.4 XOpenDisplay および XCloseDisplay におけるメモリ・リークの解決 (Alpha のみ)

V1.5

表示接続のオープンおよびクローズ時に小さなメモリ・リークが発生する問題は解決されています。この結果,多くの接続をオープンおよびクローズするクライアント・アプリケーションが,多くの仮想ページを必要とすることなく,少ないページ・ファイル・カウントおよびチャネル・カウント・クォータで機能します。

3.6.5 XOpenDisplay で Pending Wake 状態が発生する問題の解決(Alpha のみ)

V1.5

XOpenDisplay の最初の呼び出しで,プロセスにおける pending wake 状態が発生し次の LIB$WAIT あるいは SYS$WAKE 呼び出しがすぐに終了するという問題は解決されました。

3.6.6 イベント・フラグ番号 63 の状態が保管なしに変更されてしまう問題の解決 (Alpha のみ)

V1.5

イベント・フラグ番号 (EFN) 63 の状態を,最初に保管することなく,変更してしまうという DECwindows Motif の問題は解決されています。この問題は, DECwindows Motif for OpenVMS Alpha Version 1.3 以上が動作するシステム上のサーバからのディスプレイのオープン,データの書き込み (サーバへの転送キューに空きがない場合),およびデータの読み取りの際に発生していました。

3.6.7 Xpoll.h ヘッダ・ファイルと ConnectionNumber マクロの制限

V1.5

現在のバージョンの Xpoll.h ヘッダ・ファイルは, DECW$LCN_SELECT へのインタフェースを実現します。このインタフェースは,select 関数の C ランタイム・ライブラリ (CRTL) 定義との互換性はありません。特に DECW$LCN_SELECT は,スレッドが初期化されていない場合の ConnectionNumber ディスプレイ・マクロのサポートを実装していません。

アプリケーションで Xpoll.h および ConnectionNumber マクロを使用している場合は,問題の発生を避けるために次のように変更することをお勧めします。

#include <X11/Xlib.h> 
#define DECW$LCNConnectionNumber(dpy) ((_XDisplayPriv)dpy->fd) 



3.6.8 接続障害エラー・メッセージのレコード形式の変更

V1.3--1

接続要求が拒否されると,X ディスプレイ・サーバは情報メッセージを生成し,Xlib はそのメッセージを stderr に出力します。以前のバージョンでは,出力されるメッセージはレコードごとに 1 文字の形式でした。この出力形式は変更され,メッセージ全体が 1 つのレコードとして渡されるようになりました。

この変更は,レコード単位で記録されるエラー・メッセージ・ファイルでのみ明らかになります。たとえば,HP Digital Test Manager (DTM) で生成されたメッセージ・ファイルでは,変更された形式を確認できます。

3.6.9 廃止されたエントリ・ポイントと変更されたエントリ・ポイント

V1.3

次のサポートされない Xlib エントリ・ポイントは, DECW$XLIBSHR イメージから削除されました。

XCMSCIELAB_VALIDSPEC
XCMSCIELUV_VALIDSPEC
XCMSCIEUVY_VALIDSPEC
XCMSCIEXYY_VALIDSPEC
XCMSCIEXYZ_VALIDSPEC
XCMSLRGB_RGBI_PARSESTRING
XCMSLRGB_RGB_PARSESTRING
XCMSTEKHVC_VALIDSPEC

また,次のファイルは廃止予定になっており, OpenVMS の今後のリリースで削除されます。

これらの関数を使用しているアプリケーションは,変更が必要です。

3.6.10 XConnectionNumber と ConnectionNumber の意味の変更

V1.3

DECwindows Motif Version 1.3 以降のシステムでは, XConnectionNumber 関数と ConnectionNumber マクロの意味が変更されました。

以前のバージョンの DECwindows Motif では,この関数とマクロのどちらも,イベント・フラグ番号 (EFN) を返していました。次のように一般的な方法で実装されている呼び出しでは,イベント・フラグは入力を受け取った時点で設定されました。

sys$clref (ConnectionNumber (dpy)); 
  while (XPending (dpy) != 0) XNextEvent (dpy); 
  sys$waitfr (ConnectionNumber (dpy)); 

DECwindows Motif Version 1.3 では, XInitThreads の呼び出しによってマルチスレッドのサポートが有効になったときの,この関数やマクロの動作が変更されました。マルチスレッドが有効になっている場合は,この関数やマクロは論理接続番号 (LCN) を返すようになりました。

LCN は,サーバからの入力が存在する場合,読み取り設定状態にあります。 LCN は,すべての出力バッファが使用中でなければ,書き込み設定状態にあります。これ以外の状態は,弊社で使用するために予約されています。

EFN の代りに LCN を使用するには,上記の実装を,次のように変更します。

  int readState; 
while (XPending (dpy) != 0) XNextEvent (dpy); 
  decw$lcn_select_one (ConnectionNumber (dpy), &readState); 

LCN 状態はサーバからの入力を反映し,応答の処理中にキューイングされたイベントは含まないため,イベント・キューが空になった後に select 呼び出しを行わなければなりません。

DECW_CONNECTIONNUMBER_IS_LCN マクロに true (1) を設定して XLIB.H をインクルードすることによって, ConnectionNumber マクロが LCN 値 (常に利用可能) を取得するように強制できます。例を次に示します。

#define DECW_CONNECTIONNUMBER_IS_LCN 1 
#include <X11/Xlib.h> 
. 
. 
. 

これは,スレッドが初期化されているかどうかにかかわらず同様に機能しなければならない共有イメージやオブジェクト・ライブラリでこのマクロを使用する場合に便利です。

LCN インタフェースの詳細については, 『HP DECwindows Motif for OpenVMS Alpha New Features』 を参照してください。

3.6.11 OpenVMS システムでのロケールのサポート

V1.2--4

DECwindows Motif V1.2-4 for OpenVMS で提供されるロケール・サポートは, DEC C ランタイム・ライブラリでのロケール・サポートと互換性があります。このロケール環境で,これらの関数を使用して国際化アプリケーションを作成する場合は,次の手順に従ってください。

  • Xlib アプリケーションでは,<X11/Xlocale.h> をインクルードします。 <stdlib.h> をインクルードする場合は, <X11/Xlocale.h> をインクルードする前にインクルードしてください。

  • Motif アプリケーションでは, <X11/Xlocale.h> は自動的にインクルードされます。

  • 次のコンパイル・フラグをオンにしてください。

    /define=(X_LOCALE,X_WCHAR,_WCHAR_T_,XLIB_XPG4_FUNCS) 
    



3.6.12 XSelectAsyncEvent ルーチンと XSelectAsyncInput ルーチン

V1.1

XSelectAsyncEvent ルーチンと XSelectAsyncInput ルーチンは, AST 引き渡し情報記憶用のメモリを割り当てます。このメモリは次のいくつかの方法で解放されます。

  • ディスプレイをクローズ (XCloseDisplay) すると,そのディスプレイのすべてのウィンドウに対応する AST 引き渡し情報が解放されます。

  • ウィンドウを破棄 (XDestroyWindow) すると,そのウィンドウ用の AST 引き渡し情報が解放されます。

サブウィンドウ用の AST 引き渡し情報は, XDestroyWindow によっては解放されません。

所定のウィンドウ内のすべてのイベント・タイプの AST 通知をオフにし, AST 引き渡し情報も解放したいときには,クライアント・アプリケーションは, event_mask 引数に -1 (全ビット・セット) を指定し, ast_routine 引数に 0 を指定して XSelectAsyncEvent ルーチンあるいは XSelectAsyncInput ルーチンを呼び出してください。

注意

DECwindows Motif for OpenVMS Alpha Version 1.3 以上を実行しているシステムでは, XInitThreads への呼び出しによってマルチスレッド処理が有効になっている場合, XSelectAsyncInput および XSelectAsyncEvents はサポートされません。同等の機能は,スレッド対応 Xlib 関数を使用することによって提供されます。

マルチスレッド環境におけるこれらの関数の使用についての詳細は 『HP DECwindows Motif for OpenVMS Alpha New Features』 を参照してください。



V1.0

Pascal プログラムが Xlib 用と Motif 用の環境ファイルを利用できるように, SYS$LIBRARY:DECW$PEN_BUILD.COM コマンド・プロシージャを実行する必要があります。このコマンド・プロシージャは, DECW $XLIBDEF.PEN ファイルと DECW$MOTIF.PEN ファイルを生成します。 Pascal プログラムへのコンパイルには,提供されている .PAS ファイルよりも .PEN ファイルの方が高速となります。

3.6.14 パラメータ/プロトコルのデータ・サイズの不適合

V1.0

いくつかの Xlib ルーチンはロングワードのパラメータを受け付けますが,サーバへ送信される X プロトコル・メッセージにはその全体は含められません。それぞれの場合で,Xlib ルーチンは,パラメータ値の最下位 16 ビットのみを送出します。これは,X プロトコル・メッセージ内のフィールド・サイズにより受ける制約です。

表 3-4 は, 16 ビット値としてのみ送出されるルーチンの名前とロングワード引数のリストです。

表 3-4 16 ビット値としてのみ送出されるルーチンの名前と引数
ルーチン名 引数
XAllocColorCells/ALLOC_COLOR_CELLS nplanes,npixels
XDrawArc/DRAW_ARC x,y,width,height, angle1,angle2
XDrawLine/DRAW_LINE x1,x2,x3,x4
XDrawPoint/DRAW_POINT x,y
XDrawRectangle/DRAW_RECTANGLE x,y,width,height
XDrawString/DRAW_STRING x,y
XDrawString16/DRAW_STRING16 x,y
XDrawText/DRAW_TEXT x,y
XDrawText16/DRAW_TEXT16 x,y
XFillArc/FILL_ARC x,y,width, height,angle1,angle2
XFillRectangle/FILL_RECTANGLE x,y,width,height



3.7 X Window System 拡張とプロトコル

この節では, DECwindows Motif 用 X Window System 拡張について説明します。

3.7.1 XINERAMA での XCopyArea の使用

V1.3--1

グラフィック・エクスポーズ・イベントは XCopyArea 要求に対して生成されるようになりました。 XCopyArea 関数を呼び出すプログラムでは,要求で使用される gc で常にグラフィック・エクスポーズを有効にしておく必要があります。

3.7.2 XINERAMA が VisibilityNotify を正しく報告しない問題

V1.3--1

XINERAMA を使用するマルチヘッド・システムでアプリケーションが表示を行う場合, VisibilityNotify イベントはウィンドウの状態を正しく報告しません。ウィンドウが表示され VisibilityNotify が選択されている場合,ウィンドウの状態は Unobscured として報告されますが,実際のウィンドウの状態は Unobscured または PartiallyObscured である可能性があります。この問題を回避するには, VisibilityNotify イベントを PartiallyObscured として扱うようにアプリケーションを変更してください。

ウィンドウが表示されると,それ以上表示に関するイベントは報告されません。たとえば, VisibilityNotifyが選択されているウィンドウが他のウィンドウの下に隠れた場合, FullyObscuredであることを示すイベントを報告する必要がありますが,このイベントは送信されません。


目次 索引

© 2010 Hewlett-Packard Development Company, L.P.