スポンサーサイト

公開日 : --/--/-- (--)
カテゴリ : スポンサー広告
<< ブログトップ >>

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Keisuke's TwittPlayNow for WMP 1.02 リリース (2011/07/08)

公開日 : 2011/07/08 (金)
コメント : 0 件 | カテゴリ : リリース告知
<< ブログトップ >>

度重なるバージョンアップで本当に申し訳ないです…。

初期バージョンで見つかった不具合の修正が不完全で、1.01 でもなお Windows Media Player 本体を巻き込んで異常終了してしまう不具合が直っていませんでした。

このため、今回も緊急でバージョンアップを行い、本日 1.02 をリリースしました。

1.02 ではプラグイン専用スレッドの開始タイミングとスレッド終了タイミングの調整と先述の異常終了してしまう不具合修正がメインとなります。実際に作ってみてわかったのですが、バックグラウンド プラグインを通じてメディア情報を取得しに行く際は取得できた IWMPMedia オブジェクトを解放してはならないことや、コア オブジェクト (IWMPCore オブジェクト) のアドレスが NULL になった場合の対策も必要になることがわかりました。

つまり、バックグラウンド プラグインでメディア情報を取りに行く場合は、

・終了検出フラグと専用スレッドを用意する
・まず、専用スレッドを自身のクラスの FinalConstruct() 内で開始させる
・IWMPCore オブジェクト用のグローバル変数を用意しておき、SetCore() 内でコア オブジェクト アドレスをグローバル変数へ入れる
・IWMPCore のアドレスが NULL でないことを確認してから取得処理等を行う
・取得前に再生中かどうかを確認してから決めるように仕向け、再生中の時だけ取りに行くようにする
・取得した IWMPMedia オブジェクトは解放してはならない
 (解放してしまうと異常終了誘発の原因となる)
・アンロード時 or 終了時に実行される FinalRelease() 内で用意しておいたフラグをセットし、スレッド終了を指示し、終了待機させる (while ループ)
・スレッド側はフラグをチェックしてセットされていれば終了させる
・そしてスレッド終了が検出されたところで待機用ループを抜け出して処理を続行させる

上記の要点を押さえれば意外にも簡単にメディア情報取得プラグインが作れてしまいます。あらかじめ生成されたコードはプラグインの土台そのものなのでほとんどいじくる必要もないわけですね。要するに、あとはヘッダとソース コードを少しいじくって専用スレッド コードを用意しておけば、あとはコア部分の開発に専念できるというわけです。

また、プラグイン本体を Visual C++ 2008 Express Edition でリビルドしています。Microsoft Platform SDK for Windows Server 2003 R2 等でインストールした ATL ヘッダと MFC ヘッダを 2008 で使えるように設定を変えただけでソース コードをいじることなく 2005 から移行できました。

これによって、すべてのバイナリが 2008 でビルドできたことになります。

三度目の正直で今度こそ不具合を修正しましたので、1.01 以前をお使いの方で異常終了してお困りの方は 1.02 をお試しください。度重なるバージョンアップでお手数をおかけしてしまい、申し訳ありませんでした。

コメント一覧

コメントする















管理人のみ確認可能にする

| ブログトップ |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。