PHPOpenGL glutTimerFunc 修正

glutTimerFunc に限らず 〜Func を何度も呼んでると落ちる不具合でした。

修正イメージ

MINIT に集約するか迷ったけど、とりあえずガードをかけました。

  • php_convert.h
#define HASH_CALLBACK(callback,param_num,hash_key) \
        { \
                zval *function_name; \
                IS_CALLBACK(callback,param_num); \
                if(zend_hash_index_find(call_backs, hash_key,(void **)&function_name) != SUCCESS) { \
                        zval_add_ref(&callback); \
                        zend_hash_index_update(call_backs, hash_key, callback, sizeof(zval), NULL); \
                }  \
        }

Windows build

一からインストールしてみたけど、Visual C++ 2008 と SDK 7.1 の組み合わせはダメっぽい。

エラー: 指定されたレジストリ キーまたは値が見つかりませんでした

と出て、setenv からして使えない。

という訳で、Visual C++ 2008 と SDK 6.1 をインスール。

Recreating build dirs
fatal error C1900: 'P1' Version '20080116' と 'P2' Version '20070207' が一致しません。
LINK : fatal error LNK1257: コードの生成に失敗しました。
NMAKE : fatal error U1077: '"C:Program Files\Microsoft Visual Studio 9.0\VC\Bin\cl.exe"' : リターン コード '0x2'
Stop.

これはこれでダメらしい。残念。

追記 (2013/01/28)

SDK6.1 は SP1 用なので SP1 を適用する必要がある。

あと、2008 と SDK7.1 を組み合わせる事も出来るみたい