触らぬ神に祟りなし今は、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に上がる。Sierraでは、「表示」メニューのトップに表示されている筈の「タブバーを表示」メニューを、表示されない様にした。Sierraが、勝手に、作者のメニューに挿入して表示させているモノだからだ。macOSが勝手に挿入しているメニュー項目としては、AG-ムービーカッターの「ヘルプ」メニューにある「検索」もあるのだが、こちらについては、他アプリでも普通は表示させているし、表示させておいても実害はないので、そのままにする。上記の「タブバーを表示」については、これが追加される事によって、他OS版と比べて、macOS版のみ、「表示」メニューの項目が変わってしまうので操作が混乱するし、これを実行すると、他に表示されるタブが無いにも関わらず、実際にウインドウがタブ表示になってしまうので、画面の表示領域も無駄に占有されてしまう。Sierraで追加されたAPIを使ってタブバー自体の使用を禁止するか、ウインドウの属性を変更する必要があるみたいだった。Late2009では、Mirror-DTCクライアントは起動しなくなったので、ウインドウの属性を変更する方法を使う事にした。Mode」がデフォルト状態だと「Automatic」になっているのだがこれを「Disallow」に変更した。Ver1.3.0.3以前のバイナリでは、「表示」メニューに「タブバーを表示」は追加されないのだが、その理由は、Ver1.3.0.3までは、開発言語環境を英語にしてあったからだ。「タブバーを表示」はmacOSが「表示」メニューに勝手に追加する項目なので、開発言語環境が英語の場合には、追加対象メニュー名が「View」になるので、日本語名の「表示」を使っていたMirror-DTCには、追加されていなかった訳だ。開発言語環境を英語にしておくと、ファイル転送時に表示されるファイルダイアログが英語表記になってしまうので、Ver1.3.0.4では、それを嫌って、開発言語環境をデフォルトの日本語のみにしたので、「タブバーを表示」が追加される様になっていた訳だ。言う事で、今回、サーバー側で変更が入るので、合わせて、クライアント側でも、この無意味、というか、実害まであるメニュー項目の自動追加が行われない様に変更を入れる事にした訳だ。Adsense)サービスを利用しています。使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。パートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。