Search
lxdream.org :: lxdream/src/gdrom/gdrom.c :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/gdrom/gdrom.c
changeset 678:35eb00945316
prev644:ccae4bfa5f82
next691:ad3356543392
author nkeynes
date Sat Jun 14 11:54:15 2008 +0000 (15 years ago)
permissions -rw-r--r--
last change Change colour params to float
Convert background processing over to scene structure (fixes some depth issues as well)
Add color unclamp when supported
file annotate diff log raw
1.1 --- a/src/gdrom/gdrom.c Sun Mar 02 11:38:08 2008 +0000
1.2 +++ b/src/gdrom/gdrom.c Sat Jun 14 11:54:15 2008 +0000
1.3 @@ -20,13 +20,22 @@
1.4 #include <stdio.h>
1.5 #include <fcntl.h>
1.6 #include <errno.h>
1.7 +#include <glib/gutils.h>
1.8 #include "gdrom/ide.h"
1.9 #include "gdrom/gdrom.h"
1.10 +#include "gdrom/gddriver.h"
1.11 #include "gdrom/packet.h"
1.12 #include "dream.h"
1.13
1.14 extern gdrom_disc_t gdrom_disc;
1.15
1.16 +DEFINE_HOOK( gdrom_disc_change_hook, gdrom_disc_change_hook_t )
1.17 +
1.18 +gdrom_fire_disc_changed( gdrom_disc_t disc )
1.19 +{
1.20 + CALL_HOOKS( gdrom_disc_change_hook, disc, disc == NULL ? NULL : disc->name );
1.21 +}
1.22 +
1.23 gdrom_image_class_t gdrom_image_classes[] = { &cdrom_device_class,
1.24 &nrg_image_class,
1.25 &cdi_image_class,
1.26 @@ -89,17 +98,20 @@
1.27
1.28 void gdrom_mount_disc( gdrom_disc_t disc )
1.29 {
1.30 - gdrom_unmount_disc();
1.31 - gdrom_disc = disc;
1.32 - gdrom_image_dump_info( disc );
1.33 + if( disc != gdrom_disc ) {
1.34 + gdrom_unmount_disc();
1.35 + gdrom_disc = disc;
1.36 + gdrom_image_dump_info( disc );
1.37 + gdrom_fire_disc_changed( disc );
1.38 + }
1.39 }
1.40
1.41 gboolean gdrom_mount_image( const gchar *filename )
1.42 {
1.43 gdrom_disc_t disc = gdrom_image_open(filename);
1.44 if( disc != NULL ) {
1.45 - gdrom_mount_disc( disc );
1.46 - return TRUE;
1.47 + gdrom_mount_disc( disc );
1.48 + return TRUE;
1.49 }
1.50 return FALSE;
1.51 }
1.52 @@ -107,7 +119,8 @@
1.53 void gdrom_unmount_disc( )
1.54 {
1.55 if( gdrom_disc != NULL ) {
1.56 - gdrom_disc->close(gdrom_disc);
1.57 + gdrom_disc->close(gdrom_disc);
1.58 + gdrom_fire_disc_changed(NULL);
1.59 }
1.60 gdrom_disc = NULL;
1.61
1.62 @@ -118,6 +131,15 @@
1.63 return gdrom_disc;
1.64 }
1.65
1.66 +const gchar *gdrom_get_current_disc_name()
1.67 +{
1.68 + if( gdrom_disc == NULL ) {
1.69 + return NULL;
1.70 + } else {
1.71 + return gdrom_disc->name;
1.72 + }
1.73 +}
1.74 +
1.75 gchar *gdrom_get_relative_filename( const gchar *base_name, const gchar *rel_name )
1.76 {
1.77 gchar *dirname = g_path_get_dirname(base_name);
.