HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
V1.3--1
XINERAMA ベースのマルチヘッド・システムで New Desktop を使用する場合,次の制限があります。
DECwindows Motif の一部のダイアログ・ボックスは,画面の中心に表示されるように設計されています。縦横いずれかの方向で,表示されている画面の数が偶数の場合,ダイアログ・ボックスは 2 つの画面が接合する部分に表示されるため見づらくなります。一部のダイアログ・ボックスは画面上で移動できますが,次のダイアログ・ボックスは,ウィンドウ・マネージャが動作していないときに表示されるので,画面上で移動することができません。
[ログイン] ダイアログ・ボックス
[ログイン・ヘルプ] ダイアログ・ボックス
[ログイン・パスワード設定] ダイアログ・ボックス
[Kerberos ログイン] ダイアログ・ボックス
[ログアウト確認] ダイアログ・ボックス
[ワークスペース再起動確認] ダイアログ・ボックス
ワークスペース・マネージャが表示する [座標の移動/サイズ設定]
CDE$SYSTEM_DEFAULTS:[CONFIG.C]: にある XRESOURCES.DAT ファイルで次のリソースを設定すると,ログイン・ダイアログ・ボックスを手動で移動できます。
Dtlogin*matte.x: 50 Dtlogin*matte.y: 100 |
CDE$SYSTEM_DEFAULTS にある XRESOURCES.DAT ファイルは, DECwindows Motif をインストールするたびに置き換えられます。このファイルを変更した場合は,変更後のコピーを CDE$USER_DEFAULTS:[CONFIG.C] に保存して,カスタマイズした設定が失われないようにしてください。 |
Dtlogin*matte resourcesを再定義した後,ログイン・プロセスを再起動します。ログイン・ダイアログ・ボックスは指定した (x,y) 座標に表示されます。 x 座標または y 座標を省略したり,0 に設定した場合には,画面はその軸の中心に表示されます。
コンソール・ウィンドウが使用されている場合,画面の垂直方向の位置は中心から少しだけ上にずれることがあります。
3.7.5 サポートされていないサーバ拡張の組み合わせ
V1.3
現在,次の組み合わせの X サーバ拡張はサポートされていません。
XINERAMA と D2DX
DBE と MULTIBUFFERING
これらの拡張は,同じ DECwindows Motif システム上で同時に有効にすることができます。ただし,リソースや関数が衝突するため,これらの拡張を同じシステムで同時に使用することはできません。
3.7.6 XINERAMA を使用した垂直マルチヘッド構成で XMAG を実行しているときに余分な文字が表示される問題
V1.3
XINERAMA を使用しているマルチヘッド・システム上に XMAG を使用してイメージを表示する場合,画面が垂直に構成されていると,画面間に余分な文字の行が 1 ピクセル分表示されます。画面が水平に構成されている場合は,この問題は発生しません。
3.7.7 XINERAMA を使用したマルチヘッド構成でカスケード・メニューが誤った位置に表示される問題
V1.3
XINERAMA を使用するマルチヘッド構成では, DECwindows Motif のカスケード・メニューが正しい画面に表示されないことがあります。メニューは,誤った画面上の正しい位置に表示されます。現在,回避策はありません。
3.7.8 XINERAMA の 3D モードでのサポート
V1.3
3D アプリケーション (OpenGL など) を使用する X サーバで, XINERAMA 拡張を使用することはサポートされていません。この拡張は,2D 環境でのみ使用できます。
この章では, DECwindows Motif 環境でのプログラミングについての注意事項を説明します。
4.1 プログラミング全般
この節では, DECwindows Motif プログラミング環境全般についての注意事項を説明します。
4.1.1 V1.3-1 またはそれ以降でアプリケーションが正しく表示されない問題
V1.6
DECW$INCLUDE:XLIB.h に定義されている ConnectionNumber マクロを使用して LCN を取得し,サーバからのイベントをポーリングしているアプリケーションで,この問題が報告されました。 V1.3-1 またはそれ以降の ConnectionNumber マクロの実装では, LCN ではなく EFN が返されます。これにより,V1.3-1 またはそれ以降のアプリケーションは,サーバからのイベントを受信しなくなります。アプリケーションはサーバからイベントを受信しないため,正しく表示されず,アプリケーションがハングアップしているように見えます。
この問題に対処するために, ConnectionNumber マクロの実装が変更されました。このマクロは,イベント・フラグ番号を返す (DECwindows V1.2-6 との互換性のため) ことも,論理接続番号を返すこともできます。 DECW_Select 関数では,論理接続番号を使用する必要があります。
ConnectionNumber マクロは, DECW_USE_LCN_FOR_CONNECTION マクロが設定された状態でコンパイルすると,必ず論理接続番号を返します。このマクロが設定されておらず,XInitThread が呼び出されない場合は, ConnectionNumber はイベント・フラグ番号を返します。このマクロが設定されていないが,XInitThread が呼び出された場合は,論理接続番号が返されます。
XConnectionNumber 関数は, XInitThreads が呼び出されていなければイベント・フラグを返し, XInitThreads が呼び出されており, DECW_USE_LCN_CONNECTION マクロの影響がなければ論理接続番号を返します。しかし,DECW_USE_LCN_FOR_CONNECTION が定義されていれば, XConnectionNumber は, DECW$ConnectionNumber 関数にマッピングされるマクロとして定義されます。この関数は,論理接続番号を返すように定義されています。
4.1.2 XPOLL.H の変更
V1.6
XPOLL.H ヘッダ・ファイルは, relaxed_ansi モードでコンパイルできるように変更されました。 XPOLL.H は, fd_set 型の代わりに DECW_FD_Set 型を定義し, FD_ZERO,FD_CLR,FD_SET,FD_ISSET,および Select の代わりにマクロ DECW_FD_ZERO,DECW_FD_CLR,DECW_FD_SET,DECW_FD_ISSET, DECW_Select を定義している点で X.org のサンプル実装と異なっています。これは,OpenVMS をインストールすることで提供される socket.h および time.h で行われている別の定義との衝突を避けるためです。 XPOLL.H をインクルードする前に DECW_USE_FD_SET マクロが設定されている場合,標準の名前が使用されますが,これらの名前は対応する DECW マクロを指します。
たとえば, xpoll.h をインクルードする前に DECW_USE_FD_SET マクロを設定すると, FD_CLR は DECW_FD_CLR と同じになります。 time.h または select.h からの定義もプログラム中で必要な場合には,この設定は行わないでください。
XPOLL.H は "DECW_Select" マクロを定義しますが,これはソケット関数 "select" と同じではありません。 "DECW_Select" マクロは X-Lib と ICE が用意する接続番号だけをサポートしていますが,"select" 関数は,オープン済みソケットのファイル記述子だけをサポートしています。
XPOLL.H のマクロは,XInitThreads が呼び出されていてもいなくても,使用することができます。ただし, ConnectionNumber マクロを使用する際には次の点に注意してください。
XPOLL.H を使用したコード例を次に示します。
while (!XEventsQueued (dpy, QueuedAfterReading))
{
/* wait for more events */
DECW_FD_Set fds;
DECW_FD_ZERO (&fds);
DECW_FD_SET (ConnectionNumber(dpy), &fds);
DECW_Select (1, &fds, 0, 0, 0);
}
|
このコードが正しく動作するためには,XEventsQueued 呼び出しと DECW_Select 呼び出しの間で,イベントがイベント・キューに移動されず,処理されないことが重要です。このような状況は,他のスレッドが XEventsQueued を呼び出した場合に発生することがあります。ディスプレイに対して,XSelectAsyncInput または XSelectAsyncEvent が呼び出された場合にも発生することがあります。そのため, DECW_Select 関数では非同期イベントの処理を有効にしないでください。
4.1.3 XLIBINT.H の変更
V1.6
XLIBINT.H 内の LockDisplay() マクロを参照するアプリケーションをコンパイルすると, LockDisplay() が使用する SYS$SETAST() ルーチンにプロトタイプがないため,診断警告メッセージが出力されていました。
XLIBINT.H ヘッダ・ファイルが修正され,この診断警告メッセージの出力は解消されています。
4.1.4 _XDefaultIOError でのエラー処理の問題
V1.6
V1.3 および V1.3-1 での _XDefaultIOError ルーチンの実装のバグにより,このルーチンを使用するプログラムが,失敗にもかかわらず $STATUS として 1 を返していました。この問題は修正され,"-E-" エラーが通知されるようになりました。
4.1.5 _XDefaultError でのエラー処理の問題
V1.6
V1.3 および V1.3-1 の _XDefaultError ルーチンの実装のバグにより,プログラムがエラーで異常終了します。この問題は修正され,"-E-" エラーが通知されるようになりました。このコードにより,省略時のエラーハンドラに処理が引き継がれます。ただし,X-lib の X.Org 仕様では,省略時のエラー処理はメッセージを出力し,終了するように規定されています。この標準との相違については,注意する必要があります。
4.1.6 OSF/Motif ツールキットのサポートと互換性
V1.3--1
次の表に, DECwindows Motif のリリースごとに,ベースとなっている OSF/Motif ツールキットと X Window System の最新バージョンを示します。
| DECwindows Motif | OSF/Motif ツールキット | X Window System |
|---|---|---|
| Version 1.3,1.3--1および1.5 | CDE Motif 1.0 (OSF/Motif Release 1.2.5) | Version 11 Release 6.6 (X11R6.6) |
| Version 1.2--4, 1.2--5, および 1.2--6 | CDE Motif 1.0 (OSF/Motif Release 1.2.5) | Version 11 Release 5 (X11R5) |
| Version 1.2--3 | OSF/Motif 1.2.3 (Common Desktop Environment (CDE) 用の拡張あり) | X11R5 |
| Version 1.2 | OSF/Motif 1.2.2 | X11R5 |
| Version 1.1 | OSF/Motif 1.1.3 | Version 11 Release 4 (X11R4) |
| Version 1.0 | OSF/Motif 1.1.1 | X11R4 |
日本語 DECwindows Motif for OpenVMS Version 1.1 アプリケーションは, DECwindows Motif の現在のバージョンに変更を加えなくても継続して実行することができますが,ドラッグ・ドロップ機能やテア・オフ・メニューなどのV1.2 の機能を利用することができるのは,OSF/Motif リリース 1.2.2 ツールキットに対してビルドされているアプリケーションだけです。
4.1.7 ランタイムおよびプログラミング環境
DECwindows Motif for OpenVMS Version 1.5 では,以下のランタイムおよびプログラミング環境を提供します。
開発サポートは特に CDE Motif 1.0 Toolkit 用に提供されますが, DECwindows Motif for OpenVMS Version 1.2--4 より前からシステムに存在する OSF/Motif Release 1.1.3 プログラミング環境を保管することをインストール時に選択することもできます。
POLYCENTER Software Installation ユーティリティを使用してこのソフトウェアをインストールする際に OSF/Motif リリース 1.1.3 ツールキットのプログラミング・ファイルが存在している場合は, OSF/Motif リリース 1.1.3 アプリケーションの開発に使用されたヘッダ・ファイルおよび UIL コンパイラの保存を選択することができます。このファイルの保存を選択した場合,インストレーション・プロシージャはサブディレクトリ[.DECW$113] を作成し,以前のプログラミング・ファイルはこの新しいディレクトリに移されます。
Release 1.1.3 のプログラミング環境の保管については『HP DECwindows Motif for OpenVMS インストレーション・ガイド』を参照してください。 OpenVMS Alpha および OpenVMS I64 における Release 1.1.3 プログラミング・サポートに関するその他の情報は, 第 4.3.3 項 を参照してください。
4.1.8 アップコールが有効なマルチスレッド・アプリケーションでアドレスの間違いが発生する問題の解決 (Alpha のみ)
V1.5
DECwindows Motif for OpenVMS Alpha Version 1.3 以上のシステムで,マルチスレッドの DECwindows Motif アプリケーションをアップコールを有効にしてコンパイルし,実行すると,ユーザ・モード・スタックでランダム・アドレスに間違いが発生する場合があるという問題がありました。この問題は, DECwindows Motif for OpenVMS Version 1.5 で解決されています。
4.1.9 すべてのトランスポート・バッファが使用中の場合に DECwindows ディスプレイ・サーバが書き込み操作をブロックする問題
V1.5
すべてのトランスポート・バッファが使用中の場合, DECwindows X ディスプレイ・サーバは DECwindows クライアントへの書き込み操作をブロックします。クライアントが, 30 秒のタイムアウト期間内でバッファの読み取りおよび解放に失敗すると,サーバはその接続をクローズします。この場合,このタイムアウト時間内はサーバはハング状態になりその他の要求あるいはイベントの処理を行いません。
DECwindows Motif Version 1.3 より前のバージョンでは,クライアント・ソフトウェアは,ユーザ・モード AST を使用してトランスポート・バッファから内部メモリへイベントを転送します。このため,一時停止状態の場合あるいはユーザ・モード AST が長期間無効な場合は,クライアントはバッファの読み取りに失敗します。
Version 1.3 以降, DECwindows Motif クライアントは,イベントを処理するクライアント機能,あるいは応答が必要なクライアント機能が呼び出されるまでトランスポート・バッファからの読み取りを行いません。特定の表示接続に関してクライアントがイベントをアクティブに処理していない場合,イベントが到着したときにサーバがハングし,接続がクローズします。 Xt を使用してアプリケーション・コンテキストを作成し XtAppMainLoop を使用してイベントを処理するプログラムでは,この問題は発生しません。
4.1.10 getaddrinfo および getnameinfo を呼び出す関数が TCP/IP 接続でスレッドセーフでない問題
V1.5
HP TCP/IP Services for OpenVMS では,現在は getaddrinfo および getnameinfo 関数のスレッドセーフの実装を提供していません。このため,XOpenDisplay および IceOpenConnection の DECwindows の実装,ならびにこれらの関数でビルドされたイメージも, TCP/IP トランスポートで接続がオープンされた場合はスレッドセーフではありません。この問題は,IPv4 あるいは IPv6 のどちらの名前フォーマットの TCP/IP トランスポート接続の場合も同じように適用されます。
4.1.11 UIL コンパイラでサポートするトップレベル・ウィジェットの最大数の変更方法
V1.3--1
UIL コンパイラでは,UID ファイルに書き込むことができるトップレベル・ウィジェットの最大数が設定されています。トップレベル・ウィジェットとは,名前が付けられ, UIL コンパイルで参照されないウィジェットのことです。ウィジェットの最大数のデフォルトは 1000 に設定されます。この最大数を超えると,UIL コンパイラは次のエラー・メッセージを表示します。
$ UIL test.uil %UIL-F-SUBMIT_SPR, internal error - submit defect report |
この制限を変更し,エラーが発生しないようにするには,論理名 DECW$MRM$MAX_MODULE_WIDGET を使用します。 UIL コンパイラを実行する前に,この論理名を次のように定義してください。
$ DEFINE DECW$MRM$MAX_MODULE_WIDGET 2000 $ UIL test.uil |
上記のエラー・メッセージは,コンパイルの他の問題によって発生することもあります。すでに論理名 DECW$MRM$MAX_MODULE_WIDGET を使用してトップレベル・ウィジェットの最大数を引き上げているのに,コンパイル時にこのエラー・メッセージが引き続き表示される場合は,ビルドの問題や依存関係の問題がないか,UIL ファイルを確認してください。 |
V1.3
DECwindows Motif クライアント・ライブラリへの重要な新機能の追加により,実行時に DECwindows Motif が使用するスタック領域が増えることがあります。 DECwindows Motif の関数をメイン・スレッド以外のスレッドから呼び出すクライアント・アプリケーションでは,スタック・オーバフローが発生することがあります。
オーバフローが発生した場合,生成されるスレッド用に大きいスタック・サイズを指定してアプリケーションを再構築してください。
この問題は,シングルスレッド・アプリケーションや, DECwindows Motif の関数をすべてアプリケーションのメイン・スレッドから呼び出すマルチスレッド・アプリケーションでは発生しません。
| 前へ | 次へ | 目次 | 索引 |