[retro-gtk/wip/aplazas/disk] Merge disk control in Core in C



commit aefda6c9d69fe73efd69d74875b46b6c4f2f8d38
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Aug 31 15:50:18 2017 +0200

    Merge disk control in Core in C

 retro-gtk/Makefile.am                   |    1 -
 retro-gtk/disk-controller.vala          |   63 -------------------------------
 retro-gtk/retro-core.c                  |   16 ++++---
 retro-gtk/retro-core.h                  |    3 +-
 retro-gtk/retro-disk-control-callback.h |   33 ++++++++++++++++
 retro-gtk/retro-environment.c           |    2 +-
 6 files changed, 45 insertions(+), 73 deletions(-)
---
diff --git a/retro-gtk/Makefile.am b/retro-gtk/Makefile.am
index 49098e2..1265bae 100644
--- a/retro-gtk/Makefile.am
+++ b/retro-gtk/Makefile.am
@@ -44,7 +44,6 @@ libretro_gtk_la_SOURCES = \
        av-info.vala \
        core.vala \
        core-error.vala \
-       disk-controller.vala \
        game-info.vala \
        memory.vala \
        retro.vala \
diff --git a/retro-gtk/retro-core.c b/retro-gtk/retro-core.c
index 39837ab..1f0fea6 100644
--- a/retro-gtk/retro-core.c
+++ b/retro-gtk/retro-core.c
@@ -257,7 +257,7 @@ retro_core_set_disk_ejected (RetroCore  *self,
 
   internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self);
 
-  set_eject_state = internal->disk_control_interface->callback_struct.set_eject_state;
+  set_eject_state = internal->disk_control_callback->set_eject_state;
 
   if (set_eject_state == NULL) {
     g_set_error_literal (error,
@@ -288,7 +288,7 @@ retro_core_set_disk_image_index (RetroCore  *self,
 
   internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self);
 
-  set_image_index = internal->disk_control_interface->callback_struct.set_image_index;
+  set_image_index = internal->disk_control_callback->set_image_index;
 
   if (set_image_index == NULL) {
     g_set_error_literal (error,
@@ -318,7 +318,7 @@ retro_core_get_disk_images_number (RetroCore  *self,
 
   internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self);
 
-  get_num_images = internal->disk_control_interface->callback_struct.get_num_images;
+  get_num_images = internal->disk_control_callback->get_num_images;
 
   if (get_num_images == NULL) {
     g_set_error_literal (error,
@@ -350,7 +350,7 @@ retro_core_replace_disk_image_index (RetroCore     *self,
 
   internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self);
 
-  replace_image_index = internal->disk_control_interface->callback_struct.replace_image_index;
+  replace_image_index = internal->disk_control_callback->replace_image_index;
 
   if (replace_image_index == NULL) {
     g_set_error_literal (error,
@@ -380,7 +380,7 @@ retro_core_add_disk_image_index (RetroCore  *self,
 
   internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self);
 
-  add_image_index = internal->disk_control_interface->callback_struct.add_image_index;
+  add_image_index = internal->disk_control_callback->add_image_index;
 
   if (add_image_index == NULL) {
     g_set_error_literal (error,
@@ -599,7 +599,7 @@ retro_core_load_medias (RetroCore* self,
 
     return;
   }
-  if (internal->disk_control_interface != NULL) {
+  if (internal->disk_control_callback != NULL) {
     retro_core_load_discs (self, &tmp_error);
     if (G_UNLIKELY (tmp_error != NULL)) {
       g_propagate_error (error, tmp_error);
@@ -699,6 +699,8 @@ retro_core_destructor (RetroCore *self)
   if (internal->media_uris != NULL)
     g_strfreev (internal->media_uris);
 
+  // TODO Free the disk control interface
+
   g_free (self->environment_internal);
 }
 
@@ -768,7 +770,7 @@ retro_core_set_current_media (RetroCore  *self,
 
   g_return_if_fail (media_index < length);
 
-  if (internal->disk_control_interface == NULL)
+  if (internal->disk_control_callback == NULL)
     return;
 
   retro_core_set_disk_ejected (self, TRUE, &tmp_error);
diff --git a/retro-gtk/retro-core.h b/retro-gtk/retro-core.h
index 31e44ce..d651c05 100644
--- a/retro-gtk/retro-core.h
+++ b/retro-gtk/retro-core.h
@@ -3,6 +3,7 @@
 #ifndef RETRO_CORE_H
 #define RETRO_CORE_H
 
+#include "retro-disk-control-callback.h"
 #include "retro-gtk-internal.h"
 #include "retro-module.h"
 #include "retro-rotation.h"
@@ -19,7 +20,7 @@ typedef struct _RetroCoreEnvironmentInternal RetroCoreEnvironmentInternal;
 
 struct _RetroCoreEnvironmentInternal {
   RetroModule *module;
-  RetroDiskControl *disk_control_interface;
+  RetroDiskControlCallback *disk_control_callback;
   gchar **media_uris;
   RetroSystemInfo *system_info;
   gfloat aspect_ratio;
diff --git a/retro-gtk/retro-disk-control-callback.h b/retro-gtk/retro-disk-control-callback.h
new file mode 100644
index 0000000..3b301e3
--- /dev/null
+++ b/retro-gtk/retro-disk-control-callback.h
@@ -0,0 +1,33 @@
+// This file is part of retro-gtk. License: GPL-3.0+.
+
+#ifndef RETRO_DISK_CONTROL_CALLBACK_H
+#define RETRO_DISK_CONTROL_CALLBACK_H
+
+#include "retro-gtk-internal.h"
+
+G_BEGIN_DECLS
+
+typedef struct _RetroDiskControlCallback RetroDiskControlCallback;
+
+typedef gboolean (*RetroDiskControlCallbackSetEjectState) (gboolean ejected);
+typedef gboolean (*RetroDiskControlCallbackGetEjectState) ();
+typedef guint (*RetroDiskControlCallbackGetImageIndex) ();
+typedef gboolean (*RetroDiskControlCallbackSetImageIndex) (guint index);
+typedef guint (*RetroDiskControlCallbackGetNumImages) ();
+typedef gboolean (*RetroDiskControlCallbackReplaceImageIndex) (guint index, RetroGameInfo* info);
+typedef gboolean (*RetroDiskControlCallbackAddImageIndex) ();
+
+struct _RetroDiskControlCallback
+{
+  RetroDiskControlCallbackSetEjectState set_eject_state;
+  RetroDiskControlCallbackGetEjectState get_eject_state;
+  RetroDiskControlCallbackGetImageIndex get_image_index;
+  RetroDiskControlCallbackSetImageIndex set_image_index;
+  RetroDiskControlCallbackGetNumImages get_num_images;
+  RetroDiskControlCallbackReplaceImageIndex replace_image_index;
+  RetroDiskControlCallbackAddImageIndex add_image_index;
+};
+
+G_END_DECLS
+
+#endif /* RETRO_DISK_CONTROL_CALLBACK_H */
diff --git a/retro-gtk/retro-environment.c b/retro-gtk/retro-environment.c
index d731838..d09ebb9 100644
--- a/retro-gtk/retro-environment.c
+++ b/retro-gtk/retro-environment.c
@@ -218,7 +218,7 @@ static gboolean
 set_disk_control_interface (RetroCore                *self,
                             RetroDiskControlCallback *callback)
 {
-  RETRO_CORE_ENVIRONMENT_INTERNAL (self)->disk_control_interface = retro_disk_control_new (self, callback);
+  RETRO_CORE_ENVIRONMENT_INTERNAL (self)->disk_control_callback = callback;
 
   return TRUE;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]