トップ «前の日記(2002-08-23) 最新 次の日記(2002-08-25)» 月表示 編集

日々の流転


2002-08-24 [長年日記]

λ. 今日も起きたのはお昼頃。

λ. HAQ Board

が荒れてる。悲しい。

λ. コンパイル猿

というわけで、以下のようなパッチ(#91683)を当てることで、何とかそれっぽく動くようになりました。ウィンドウが表示されてから数秒で暴走するんですが、とりあえずスクリーンショット

--- gtk+-2.0.6/gdk/win32/gdkevents-win32.c~	2002-03-06 09:36:08.000000000 +0900
+++ gtk+-2.0.6/gdk/win32/gdkevents-win32.c	2002-08-24 00:38:16.000000000 +0900
@@ -126,7 +126,9 @@
   NULL
 };
 
+#ifdef G_OS_WIN32
 GPollFD event_poll_fd;
+#endif
 
 static GdkWindow *current_window = NULL;
 static gint current_x, current_y;
@@ -317,10 +319,12 @@
   source = g_source_new (&event_funcs, sizeof (GSource));
   g_source_set_priority (source, GDK_PRIORITY_EVENTS);
 
+#ifdef G_OS_WIN32
   event_poll_fd.fd = G_WIN32_MSG_HANDLE;
   event_poll_fd.events = G_IO_IN;
   
   g_source_add_poll (source, &event_poll_fd);
+#endif
   g_source_set_can_recurse (source, TRUE);
   g_source_attach (source, NULL);
 
@@ -3441,11 +3445,15 @@
   
   GDK_THREADS_ENTER ();
 
+#ifdef G_OS_WIN32
   if (event_poll_fd.revents & G_IO_IN)
+#endif
     retval = (_gdk_event_queue_find_first () != NULL)
 	      || PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE);
+#ifdef G_OS_WIN32
   else
     retval = FALSE;
+#endif
 
   GDK_THREADS_LEAVE ();
 

PeekMessage()で単純にポーリングするとすごい効率悪そう。Win32でメッセージって普通どうやって扱うんだっけなぁ…… Delphiしか使ったことないので、良く分からなかったり……