2012-05-30 57 views
0

我想使用SDL_net作爲一個輔助函數庫,供少數程序使用。但是,其中一些程序可能已經在使用SDL。如果我將事情正確地展開,這意味着在初始化/釋放我的庫時,我不能盲目地使用SDL_InitSDL_Quit,因爲SDL實例是在主程序和我的庫之間共享的。如何初始化可能由已取決於SDL的程序使用的庫中的SDL?

到目前爲止,我的最好想法是讓程序傳遞一個參數,指示它是否已經在使用SDL,這會使程序負責首先調用SDL_Init。我不知道是否有更清潔的解決方案。 SDL_WasInit看起來很有前途,但顯然只允許檢查已初始化的子系統,而不是SDL本身是否已初始化(可以使用SDL_Init(0)來完成)。

這是關於SDL 1.2的。

+0

SDL 1.2或1.3/2.0? – genpfault

+0

SDL 1.2,但如果1.3和更高版本的答案不同,那麼知道它也會很有趣。 – Medo42

回答

0

SDL_WasInit()可用於檢查特定子系統正在運行,通過像SDL_WasInit(SDL_INIT_VIDEO) != 0檢查,但對SDL_WasInit的SDL docs()也說,如果你在SDL_WasInit(SDL_INIT_EVERYTHING) != 0SDL_WasInit(0) != 0通過,這將讓你知道,如果任何一個子系統的SDL正在運行。

+0

正如我在我的問題中所說的,我已經嘗試過'SDL_WasInit'。調用'SDL_init(0)'後,'SDL_WasInit(0)'和'SDL_WasInit(SDL_INIT_EVERYTHING)'仍然返回0。 – Medo42