結論的には、Wine では、完全透明色が設定されている全ての LAYERED_WINDOW に
対して、Idle状態の時か、または、50(ms) 毎に、Windowアプリのメッセージループ
の中から自動的に、>>418 の update_surface_region() が呼び出されるようになっ
ているらしいです。この条件のWindowがあって、かつ、update_surface_region() の
処理が重い場合に、動作が遅くなる可能性が高いです。Dirty Bitのようなものは、
今のところ見つかっていませんので、何もしなくても常に重くなるのでしょうか。
【詳細】
flush_window_surfaces() なる関数が、定期的に呼び出される。
典型的なタイミングは、PeekMessage() の中からであり、GetMessage()では、
check_for_driver_events() を介して呼び出される。
flush_window_surfaces() の中に次のようなマクロ呼び出しがある :
LIST_FOR_EACH_ENTRY( surface, &window_surfaces, struct window_surface, entry )
surface->funcs->flush( surface );
ここで、
/* iterate through the list using a list entry */
#define LIST_FOR_EACH_ENTRY(elem, list, type, field) \
for ((elem) = LIST_ENTRY((list)->next, type, field); \
&(elem)->field != (list); \
(elem) = LIST_ENTRY((elem)->field.next, type, field))
であり、上記は、window_surfaces リストに登録されている全ての
window_surface *surface について、window_surface_funcs *funcs の
関数ポインタ flush の関数を呼び出すことになり、結局、
関数 x11drv_surface_flush() が呼び出されることになる。
関数 x11drv_surface_flush() の中に
if (surface->is_argb || surface->color_key != CLR_INVALID) update_surface_region( surface );
とある。update_surface_region() は、>>418 に書かれている関数。
今夜も Wine で乾杯! - 21本目 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
422login:Penguin
2018/02/18(日) 12:58:43.05ID:HH6qVqdM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【自動車】残クレ650万円で買った「アルファード」わずか8ヶ月で廃車に…まだ残価580万円あるのに全部“借金”? 相手のいる事故でも? [ぐれ★]
- 【福岡】「裸を撮られた」18歳女子高校生が届け出て発覚 元交際相手の18歳高校生の男「彼氏に動画を見せれば別れて戻ってくると…」 [ぐれ★]
- 【♨】銭湯、半世紀で8割消えた 日本一の銭湯県から見えた風呂文化の変容 [ぐれ★]
- 佐藤二朗「うんこ」Xに投稿 [Ailuropoda melanoleuca★]
- ウクライナ、日本に首脳会談要請 無人機技術で協力推進 [ぐれ★]
- 米、ICC本体へ制裁か 圧力強化、機能不全恐れ [蚤の市★]
- 【悲報】ジャップ飯屋さん、明らかに1人前の量じゃないものを1人前だと出す店が多すぎる [153736977]
- 【実況】博衣こよりのえちえち空の軌跡1st最終回🧪★6
- 小野田大臣(35)「私20年間テレビ持っていません」 [834922174]
- 【悲報】関東、レベル4警報出まくり [535650357]
- 昼に起きたんだけど
- 【悲報】MEGAドン・キホーテで女の子2人が仲良く飛び降り自殺wwwwwwwwwwwwwwwwwwww [802034645]