[retro-gtk/wip/aplazas/disk] Merge disk control in Core in C
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [retro-gtk/wip/aplazas/disk] Merge disk control in Core in C
- Date: Thu, 31 Aug 2017 13:50:58 +0000 (UTC)
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]