スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« いい感じではあるのだが | トップページ | ホイール操作も変更 »

触らぬ神に祟りなし

今は、macOS用ネイティブ版AGMPlayerの開発フェーズで、初版は完成したのだが、そのリリース前に既存ソフトの不具修正版を出す。しかし、作者のMBPでMirror-DTCサーバーのクラッシュが多発するので、その修正版を更に先に出す。

昨日書いた様に、クラッシュはmacOSが提供しているCoreGraphicsの関数内で発生していたのだが、何故、CoreGraphicsの関数がクラッシュするのか、という事については、クラッシュレポートを見ていても判らなかった。

なので、作者的には、過去の様々な経験から類推して、多分、CoreGraphicsの関数をマルチスレッドで同時使用する格好になっているのが問題なんだろう、という事で、CoreGraphicsの関数を利用する処理にミューテックスでブロックを入れて行った訳だ。

その結果、クラッシュの発生頻度は減った感じだったのだが、完全には無くならなかったので、次には、これも過去の様々な経験からの類推で、CoreGraphics関数はメインスレッドからアクセスしないと問題があるのかなあ、という考えに至った。

なので、クラッシュが発生する処理はメインスレッド動作も可能だったので、そういう格好になる様に変更してみたりもしたのだが、それでも、クラッシュは完全には無くならなかった。

と、言う事で、画面がほぼ静止状態で、何もしていない状況ではクラッシュする事はないので、CoreGraphicsの関数は、他の何かの処理と同時動作させる格好になるとクラッシュする感じではあるのだが、その処理が何なのかの特定は難しそうだったので、作者的には不具合修正の方針を表題の様に変更した訳だ。

つまり、クラッシュする処理は決まっていたので、その処理を行わなくて済む様に、変更する格好にした訳だ。

その結果としては、当然の事ではあるのだが、クラッシュは発生しなくなったので、この修正方法を正式採用するのだが、元々の処理コードでは、何故、CoreGraphicsの関数がクラッシュしてしまうのかは謎のままだ。

なので、作者的には、少し、不完全燃焼っぽい心境ではあるのだが、CoreGraphicsのソースコードは公開されていない筈なので、真面目に現象を追いかけてみても、労多くして益少なしかもしれない。

ちなみに、macOS用のMirror-DTCサーバーには上記の修正が入るので、そのバージョンはVer1.3.0.5になるのだが、同梱しているMirror-DTCクライアントについても、少し変更したので、バージョンはVer1.3.0.5に上がる。

クライアントに対してはどういう変更を行なったのか、というと、macOS Sierraでは、「表示」メニューのトップに表示されている筈の「タブバーを表示」メニューを、表示されない様にした。

微妙な書き方になっているのは、このメニュー項目は作者が表示させている訳ではなく、macOS Sierraが、勝手に、作者のメニューに挿入して表示させているモノだからだ。

macOSが勝手に挿入しているメニュー項目としては、AG-ムービーカッターの「ヘルプ」メニューにある「検索」もあるのだが、こちらについては、他アプリでも普通は表示させているし、表示させておいても実害はないので、そのままにする。

しかし、上記の「タブバーを表示」については、これが追加される事によって、他OS版と比べて、macOS版のみ、「表示」メニューの項目が変わってしまうので操作が混乱するし、これを実行すると、他に表示されるタブが無いにも関わらず、実際にウインドウがタブ表示になってしまうので、画面の表示領域も無駄に占有されてしまう。

なので、こちらについては、強制的に表示されなくするのだが、調べてみた所、その方法としては、macOS Sierraで追加されたAPIを使ってタブバー自体の使用を禁止するか、ウインドウの属性を変更する必要があるみたいだった。

このため、作者的には両方を試してみたのだが、macOS Sierraで追加されたAPIを使用した場合、OS X 10.9で動作させている作者のMacBook Late2009では、Mirror-DTCクライアントは起動しなくなったので、ウインドウの属性を変更する方法を使う事にした。

具体的には、メインウインドウにある「Tabbing Mode」がデフォルト状態だと「Automatic」になっているのだがこれを「Disallow」に変更した。

なお、Ver1.3.0.3以前のバイナリでは、「表示」メニューに「タブバーを表示」は追加されないのだが、その理由は、Ver1.3.0.3までは、開発言語環境を英語にしてあったからだ。

つまり、「タブバーを表示」はmacOSが「表示」メニューに勝手に追加する項目なので、開発言語環境が英語の場合には、追加対象メニュー名が「View」になるので、日本語名の「表示」を使っていたMirror-DTCには、追加されていなかった訳だ。

しかし、開発言語環境を英語にしておくと、ファイル転送時に表示されるファイルダイアログが英語表記になってしまうので、Ver1.3.0.4では、それを嫌って、開発言語環境をデフォルトの日本語のみにしたので、「タブバーを表示」が追加される様になっていた訳だ。

と、言う事で、今回、サーバー側で変更が入るので、合わせて、クライアント側でも、この無意味、というか、実害まであるメニュー項目の自動追加が行われない様に変更を入れる事にした訳だ。

« いい感じではあるのだが | トップページ | ホイール操作も変更 »

トラックバック

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

この記事へのトラックバック一覧です: 触らぬ神に祟りなし:

« いい感じではあるのだが | トップページ | ホイール操作も変更 »

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