]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Remove grub_video_iterate
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 26 Mar 2010 23:36:28 +0000 (00:36 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 26 Mar 2010 23:36:28 +0000 (00:36 +0100)
include/grub/video.h
video/video.c

index 57f2b37f25dac80487462539a5a9389963e605df..3e8ea0e964a0195647f6a9e8026320e44decaa7d 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <grub/err.h>
 #include <grub/types.h>
+#include <grub/list.h>
 
 /* Video color in hardware dependent format.  Users should not assume any
    specific coding format.  */
@@ -185,6 +186,9 @@ typedef enum grub_video_driver_id
 
 struct grub_video_adapter
 {
+  /* The next video adapter.  */
+  struct grub_video_adapter *next;
+
   /* The video adapter name.  */
   const char *name;
   grub_video_driver_id_t id;
@@ -253,15 +257,28 @@ struct grub_video_adapter
   grub_err_t (*set_active_render_target) (struct grub_video_render_target *target);
 
   grub_err_t (*get_active_render_target) (struct grub_video_render_target **target);
-
-  /* The next video adapter.  */
-  struct grub_video_adapter *next;
 };
 typedef struct grub_video_adapter *grub_video_adapter_t;
 
-void EXPORT_FUNC (grub_video_register) (grub_video_adapter_t adapter);
-void grub_video_unregister (grub_video_adapter_t adapter);
-void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter));
+extern grub_video_adapter_t EXPORT_VAR(grub_video_adapter_list);
+
+/* Register video driver.  */
+static inline void
+grub_video_register (grub_video_adapter_t adapter)
+{
+  grub_list_push (GRUB_AS_LIST_P (&grub_video_adapter_list),
+                 GRUB_AS_LIST (adapter));
+}
+
+/* Unregister video driver.  */
+static inline void
+grub_video_unregister (grub_video_adapter_t adapter)
+{
+  grub_list_remove (GRUB_AS_LIST_P (&grub_video_adapter_list),
+                   GRUB_AS_LIST (adapter));
+}
+
+#define FOR_VIDEO_ADAPTERS(var) FOR_LIST_ELEMENTS((var), (grub_video_adapter_list))
 
 grub_err_t EXPORT_FUNC (grub_video_restore) (void);
 
index 42418f980825c2056612d92c9df40a889d8a6ffd..7a1a446e4329bd4cfdcb66631fbf30c06abe7082 100644 (file)
 #include <grub/mm.h>
 
 /* The list of video adapters registered to system.  */
-static grub_video_adapter_t grub_video_adapter_list;
+grub_video_adapter_t grub_video_adapter_list = NULL;
 
 /* Active video adapter.  */
 static grub_video_adapter_t grub_video_adapter_active;
 
-/* Register video driver.  */
-void
-grub_video_register (grub_video_adapter_t adapter)
-{
-  adapter->next = grub_video_adapter_list;
-  grub_video_adapter_list = adapter;
-}
-
-/* Unregister video driver.  */
-void
-grub_video_unregister (grub_video_adapter_t adapter)
-{
-  grub_video_adapter_t *p, q;
-
-  for (p = &grub_video_adapter_list, q = *p; q; p = &(q->next), q = q->next)
-    if (q == adapter)
-      {
-        *p = q->next;
-        break;
-      }
-}
-
-/* Iterate thru all registered video drivers.  */
-void
-grub_video_iterate (int (*hook) (grub_video_adapter_t adapter))
-{
-  grub_video_adapter_t p;
-
-  for (p = grub_video_adapter_list; p; p = p->next)
-    if (hook (p))
-      break;
-}
-
 /* Restore back to initial mode (where applicable).  */
 grub_err_t
 grub_video_restore (void)