mieki256's diary



2022/06/09(木) [n年前の日記]

#1 [xscreensaver] xscreensaverでタイルマップ描画

_昨日、 Xlibを使ってタイルマップ描画ができるか試してそれっぽくなったけれど、同じ処理を xscreensaver上でも実現できるのか気になったので試してみた。

環境は、Ubuntu Linux 20.04 LTS。Windows10 x64 21H2 + VMware Player 16.2.3 build-19376536 上で動かしてる。CPU は Ryzen 5 5600X。VMware に3コアを割り振ってる。

こんな感じになった。




動いてくれて一安心。

ただ、CPU使用率が高い気もする…。1440x900の画面解像度なら20%程度だけど、1920x1080にすると30%ぐらいになる。元画面は640x360で固定してるから…画面解像度まで拡大する処理が結構重いのだろうか。

ちなみに、VMware の設定でCPUコアを1つにして動作確認してみたけれど、3コアを指定した場合とCPU使用率は変わらなかった。xscreensaver は、複数コアが載っている環境でも、使用率の表示結果が違ってくるわけではないっぽい。

ソース。 :

今回は、xscreensaver-6.04.tar.gz をDL・解凍して、中にファイルを追加する形で実験。

_XScreenSaver
_XScreenSaver: Download


ソース(*.c)、マニュアル(*.man)。hacks/ 以下にコピーする。

_hellotilemap.c
_hellotilemap.man


設定画面定義ファイル(*.xml)。hacks/config/ 以下にコピーする。

_hellotilemap.xml


使用画像。hacks/images/ にコピーする。

_scifi_bg_chip.png


使用画像を .h に変換したファイル。hacks/images/gen/ 以下にコピーする。ただ、本来は、make時に *.png から自動生成されるはず。

_scifi_bg_chip_png.h


hacks/Makefile.in や driver/XScreenSaver.ad.in の変更点は以下。「hellotilemap」で検索すれば、どのあたりを修正してるか分かるかなと。

_makefile.in.patch
_xscreensaver.ad.in.patch


一応、xscreensaver に自作のスクリーンセーバを追加して、ビルドする手順もざっくりとメモ。公式リポジトリ版を上書きしちゃうけど…。

mkdir ~/pkg
mkdir ~/pkg/xscreensaver
cd ~/pkg/xscreensaver
wget https://www.jwz.org/xscreensaver/xscreensaver-6.04.tar.gz
tar zxvf xscreensaver-6.04.tar.gz
cd xscreensaver-6.04

# file copy

*.c : copy to hacks/
*.man : copy to hacks/
*.xml : copy to hacks/config/
*.png : copy to hacks/images/
*_png.h : copy to hacks/images/gen/
Makefile.in : copy to hacks/
XScreenSaver.ad.in : copy to driver/

# build

./configure --prefix=/usr --libexecdir=/usr/lib
make
sudo make install

rm ~/.xscreensaver
xscreensaver-settings &


少し解説。

基本的には、 _昨日、 書いた、 _09tilemap1.c をコピペしていっただけ。

ただし、xscreensaver 上では、XClearWindow() を呼んでしまうとエラーになることに気づかなくて結構ハマった。 Pixmap を対象にして中身をクリアしたかっただけなので、XFillRectangle() を使って塗り潰してしまえばOKだった。

以上です。

過去ログ表示

Prev - 2022/06 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project