スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 次のAmuseGraphics(シェアウェア版) | トップページ | クライアントも更新した »

OS X版Mirror-DTCの再更新

今はAmuseGraphicsの開発フェーズなのだが、昨日、OS X版Mirror-DTCサーバーを暫く使っているとクラッシュする、というメールが来た。添付されていたダンプから、原因はディスプレイスリープにあると思われたので、禁止してみて下さい、みたいに返信したのだが。

OS Xのディスプレイスリープというのは、大昔からあったのだが、調べてみた所、OS X 10.10の頃から、仕様が変わってしまっていたのかもしれない。

何故なら、OS X 10.9を動作させている作者のMacBook Late2009では、ディスプレイスリープ状態になっても、液晶表示が行われないだけで、Mirror-DTCサーバー的には何事も発生しないのだが、OS X 10.10/11を動作させているMac mini Late2014では、接続されているディスプレイ数が0になってしまう現象が発生しているからだ。

まあ、マシンが違うので、上記の現象は、OS Xのバージョンの違いではなく、マシンの違い、という可能性もあるのだが、いずれにしても、作者のMacは手動スリープ以外のスリープは行わせない設定にしてあったので、前述の問題に気がつかなかった訳だ。

と、いう事で、クラッシュする原因は、ディスプレイ数が0になるという想定外の状況が発生しているから、という事になる筈なのだが、そういう状況でもクラッシュさせない様にする事は、当然の事ながら、簡単に出来た。

しかし、Mirror-DTCはリモートデスクトップソフトな訳なので、ディスプレイスリープ状態になったサーバーマシンをクライアントから通常状態に戻せない事には、問題は解決しない訳だ。

このため、ネットで色々と調べてみた所、IOKitのAPIを叩くと何とかなる事が判った。

なので、クライアントからのマウス/キーボード操作要求があった場合には、上記APIを叩いて通常状態に戻す仕組みも入れたので、手元のバイナリでは、ディスプレイスリープが発生してもクラッシュはしないし、クライアントからマウス/キーボード操作をすれば、通常状態に戻せる様になっている。

で、OS Xでは、10.7 (Lion)の頃にDark Wakeというのが導入され、普通にWOLでサーバーを起動しても、画面表示が行われなくなったのだが、Darkというのは暗いという意味なので、試しに、前述のIOKitのAPIをMirror-DTCの接続開始タイミングで叩いてみると、Dark Wakeモードのままにしてあっても、WOLで普通にマシンを起動できる様になった。

つまり、作者的には、WOLを使える様に、システムにあるplistファイルを弄ってDark Wakeモードが動作しない様にしてあったのだが、手持ちバイナリでは、このplistファイルを弄る必要を無くせた訳だ。

更に、App Napについても、Mirror-DTCサーバーでは、全面禁止させる為に、起動直後に、それ用のAPIを叩いていたのだが、これだと、非接続状態でも、1%未満なのだが、常に、CPUが消費される格好になっていたので、この辺の処理についても見直した。

具体的には、非接続状態では、App Napが有効に働く様にしたのだが、その状態で正常に接続可能にするためには、接続開始時に前述のAPIを叩く等の対策も必要になった。

しかし、現状では、全てが上手くいっている感じなので、OS X版Mirror-DTCについては、7月の始めに1.3.0.1をリリースしたのだが、明日、もう少し動作確認して問題が出ない様なら、1.3.0.2をリリースする事になる筈だ。

と、いう事で、今は、AmuseGraphicsの開発フェーズなので、こんな事をやっている場合でもないかもしれないのだが、ディスプレイスリープは禁止、WOLを使いたければシステムファイルを弄れ、なんて事を言わなくて済む様になるのは、結構な、改善になるので、リリースしておきたくなった訳だ。

= この記事に関連する公開中ソフト =

Mirror-DTC

Mirror-DTC

(2016/10/25追記)

« 次のAmuseGraphics(シェアウェア版) | トップページ | クライアントも更新した »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63939427

この記事へのトラックバック一覧です: OS X版Mirror-DTCの再更新:

« 次のAmuseGraphics(シェアウェア版) | トップページ | クライアントも更新した »

2017年8月
    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 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google