結論的には、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■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 岡野タケシ弁護士、永野芽郁と田中圭のLINE履歴拡散した文春に「訴えるなら弁護士集めて全力で支援」「放置すれば本当に自殺者が出る」 [muffin★]
- 石破首相、コメ価格巡り「輸入拡大も選択肢の一つ」 フジ番組で ★2 [首都圏の虎★]
- 湯船は「コスパ・タイパが悪い」、「浴槽レス」住宅が若者に人気…掃除は手軽で家賃も割安 [少考さん★]
- 大屋根リングで1万2269人が「星条旗よ永遠なれ」…「最大のマーチングバンド」のギネス記録認定 [首都圏の虎★]
- 古市憲寿氏、戸籍巡り私見「なんでただのデータベースに愛を持てるかわからない」に反響 [ネギうどん★]
- 浦和よ、なぜ抜かれた? 大宮が「埼玉の東京」になった根本理由! SUUMOランキング2位の衝撃、行政・商業格差を徹底解剖する [首都圏の虎★]
- 山梨の駅伝大学の寮でジャップオスから手マンされたアメリカ人留学生、大学とオスに4100万円を請求 [389326466]
- 母の日の🏡
- 【実況】博衣こよりのえちえちクロノクロス🧪 ★4
- 【朗報】経団連さん、今年も自民党に24億献金へ。経団連「社会貢献の1つ」「何が問題なのか」 [673057929]
- 「一番面白いアメリカドラマ」、何を答えるかで大体の人間性が分かる [604928783]
- 【実況】博衣こよりのえちえちクロノクロス🧪 ★3