HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0614
ときわ祐矢Linux(Debian 64ビット) HSP3Dish execで止まる?4解決


ときわ祐矢

リンク

2020/6/14(Sun) 03:28:07|NO.90764


redraw 0 exec "xcalc &" mes "てすと" redraw 1 stop
execでxcalcは起動するのですが、その後のmesに行かず、xkillとかで消すしかない状態になってしまいます。
execの行をコメントアウトすると、正常に最後まで動作しているみたいです。

使い方が違っているのかと思いexecに関するドキュメントを探しているのですが、まだ見つかっていません。
ドキュメントの場所か、execの正しい使い方を、ご存知の方にご教示頂きたいです。

以下の方法で実行しています。

/areya/koreya/hspcmp -i -u test.hsp /areya/koreya/hsp3dish test.ax



この記事に返信する


ときわ祐矢

リンク

2020/6/14(Sun) 04:43:31|NO.90765

hsp.tv/play/pforum.php?mode=pastwch&num=85961
こちらを参考に、redraw 0、redraw 1、wait 100を入れてからexecすると、思い通りに動くようになりました。
(redraw 0:redraw 1だけではダメで、てきとうなwaitも必要みたいです)



zakki

リンク

2020/6/17(Wed) 18:03:23|NO.90795

hgio_gettick()でtime_tが32bit整数値のオーバーフローで絶対値の大きな負の値になって
終わらないWAIT状態に入ってるようです。
Linux版ということは自分でビルドされてると思うので、src/hsp3dish/emscripten/hgiox.cppに
場当たり的な修正入れて64bitで計算して起点を0にするのでなんとかなりませんか。

#if defined(HSPLINUX) || defined(HSPNDK) - int i; timespec ts; double nsec; clock_gettime(CLOCK_REALTIME,&ts); nsec = (double)(ts.tv_nsec) * 0.001 * 0.001; - i = (int)ts.tv_sec * 1000 + (int)nsec; + int64_t i = (int64_t)ts.tv_sec * 1000 + (int64_t)nsec; + static int64_t i0 = i; + i = (int)(i - i0); //return ((double)(ts.tv_sec) + (double)(ts.tv_nsec) * 0.001 * 0.001 * 0.001); return i; #endif



ときわ祐矢

リンク

2020/6/17(Wed) 19:12:00|NO.90796

有難うございます。試してみます。



おにたま(管理人)

リンク

2020/6/19(Fri) 23:16:42|NO.90819

>ときわ祐矢 さん
>zakki さん

Linux版のHSP3についてご報告ありがとうございました。
ご指摘の通り、waitが時間によって正しく機能していませんでした。
お手数おかけしてすみません、修正のコードもありがとうございます。
取り急ぎ、HSP3.6beta3のブランチでは修正しています。
これらの修正を含めたアップデートを近日中に公開する予定です。
https://github.com/onitama/OpenHSP/tree/hsp36b3



ONION software Copyright 1997-2023(c) All rights reserved.