vine-users ML アーカイブ



[vine-users:065739] RRScreenChangeNotifyMask の未定義について

  • From: Yasufumi Haga <yasufumi.haga@xxxxxxxxx>
  • Subject: [vine-users:065739] RRScreenChangeNotifyMask の未定義について
  • Date: Fri, 14 May 2004 13:49:04 +0900 (JST)
こんにちは、芳賀です。
Vine Linux 2.6r4 + カーネル 2.4.26 を使用中です。
以下の件で何かアドバイスをいただければと思います。

xscreensaver 4.16 を 以下の設定で make したところ、

./configure --prefix=/usr/X11R6 --enable-locking --with-sgi-ext \
            --with-mit-ext --with-xidle-ext --with-sgivc-ext \
            --with-dpms-ext --with-xf86vmode-ext --with-xf86gamma-ext \
            --with-shadow --with-gtk --with-xml --with-gl --with-xpm \
            --with-pixbuf --with-jpeg --with-xshm-ext --with-xdbe-ext \
            --with-readdisplay \
            --with-configdir=/usr/X11R6/lib/xscreensaver/config

以下のエラーが発生しました。ちなみに、上記の設定は、4.15 までは
何も問題もなく使用できており、make も正常終了していました。

xset.c: In function `query_randr_extension':
xset.c:182: warning: implicit declaration of function `XRRSelectInput'
xset.c:183: `RRScreenChangeNotifyMask' undeclared (first use in this function)
xset.c:183: (Each undeclared identifier is reported only once
xset.c:183: for each function it appears in.)
make[1]: *** [xset.o] Error 1
make[1]: Leaving directory `/home/fumi/src/xscreensaver-4.16/driver'
make: *** [default] Error 5

make 自体は "--without-randr-ext" オプションを configure スクリプト
に追加して正常終了し、現在バージョン 4.16 の xscreensaver を使用中です。

疑問なのは、"RRScreenChangeNotifyMask" というシンボルがどこにも定義されて
いないことです。以下のようにしても、

# cd /usr/include
# grep -r -i RRScreenChangeNotifyMask *
grep: 警告: gnome-xml/libxml: ディレクトリーが再帰的ループをしています

# cd /usr/local/include
# grep -r -i RRScreenChangeNotifyMask *
# cd /usr/X11R6/include/
# grep -r -i RRScreenChangeNotifyMask *
#

このシンボルはどこにも見当たりません。

使用されているのは、driver/xset.cの、以下の関数です。
/* Resize and Rotate server extension hackery.
 */

#ifdef HAVE_RANDR

# include <X11/extensions/Xrandr.h>

Bool
query_randr_extension (saver_info *si)
{
  saver_preferences *p = &si->prefs;
  Bool ok = XRRQueryExtension (si->dpy,
                               &si->randr_event_number,
                               &si->randr_error_number);
  if (ok)
    {
      int nscreens = ScreenCount (si->dpy);  /* number of *real* screens */
      int i;

      if (p->verbose_p)
        fprintf (stderr, "%s: selecting RANDR events\n", blurb());
      for (i = 0; i < nscreens; i++)
        XRRSelectInput (si->dpy, RootWindow (si->dpy, i),
                        RRScreenChangeNotifyMask);
    }

  return ok;
}

#endif /* HAVE_XIDLE_EXTENSION */

しかし、以下のようにヘッダーファイルとライブラリは存在します。

# locate libXrandr
/usr/X11R6/lib/libXrandr.so.1
/usr/X11R6/lib/libXrandr.so.1.0
/usr/X11R6/lib/libXrandr.a
/usr/X11R6/lib/libXrandr.so
# locate randr.h
/usr/X11R6/include/X11/extensions/Xrandr.h
/usr/X11R6/include/X11/extensions/randr.h

これは、本来あるべきものが、使用している環境には抜けているのでしょうか、
それとも、使用している環境では、そもそも「無い」のが正しい姿なのでしょうか。
冒頭の設定のまま、先のエラーを出さずに正常に make するにはどうすればいいの
でしょうか。


---
Yasufumi Haga   yasufumi.haga@xxxxxxxxx
                http://homepage3.nifty.com/peterpan/
fingerprint:0EFA 299A BC32 7D68 1FEF  BA2B 804E 9B15 C4F0 F9F0