diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-26 06:41:17 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-26 06:41:17 +0000 |
| commit | acd164d56c60efd57a87c0cbe53fe6aee3be6696 (patch) | |
| tree | f9de10a5ff2039170952a910920496a77ac825da /plugins/dfcdrom/callbacks.c | |
| parent | 9b9ad9958e1e373fa8804e5866e77d9f40b5d624 (diff) | |
| download | pcsxr-acd164d56c60efd57a87c0cbe53fe6aee3be6696.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38248 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom/callbacks.c')
| -rw-r--r-- | plugins/dfcdrom/callbacks.c | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/plugins/dfcdrom/callbacks.c b/plugins/dfcdrom/callbacks.c deleted file mode 100644 index 09f72f63..00000000 --- a/plugins/dfcdrom/callbacks.c +++ /dev/null @@ -1,210 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef __linux__ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <linux/cdrom.h> - -#include <gtk/gtk.h> - -#include "cdr.h" -#include "callbacks.h" -#include "interface.h" -#include "support.h" - -/* list of drives */ -GList * driveslist = NULL; - -/* private functions prototypes */ -void fill_drives_list(void); -int is_cdrom(char *device); - - -/*************************************************************************** - * Config Dialog. - ***************************************************************************/ - -void on_cfg_dialog_show (GtkWidget *widget, gpointer user_data) -{ - GtkWidget *devcombo; - GtkWidget *rmmenu; - GtkWidget *subQbtn; - GtkWidget *spinC; - GtkWidget *spinS; - - LoadConf(); - fill_drives_list(); - - devcombo = lookup_widget (GTK_WIDGET (widget), "cddev_combo"); - rmmenu = lookup_widget (GTK_WIDGET (widget), "readmode_optionmenu"); - subQbtn = lookup_widget (GTK_WIDGET (widget), "subQ_button"); - spinC = lookup_widget (GTK_WIDGET (widget), "spinCacheSize"); - spinS = lookup_widget (GTK_WIDGET (widget), "spinCdrSpeed"); - - /* show values */ - gtk_combo_set_popdown_strings (GTK_COMBO (devcombo), driveslist); - gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (devcombo)->entry), CdromDev); - gtk_option_menu_set_history (GTK_OPTION_MENU (rmmenu), ReadMode); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (subQbtn), UseSubQ); - gtk_spin_button_set_value (GTK_SPIN_BUTTON(spinC), (float)CacheSize); - gtk_spin_button_set_value (GTK_SPIN_BUTTON(spinS), (float)CdrSpeed); - - /* ??? is correct to free? it's a global... */ - g_list_free(driveslist); -} - - -void on_cfg_cancelbutton_clicked (GtkButton *button, gpointer user_data) -{ - gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (button))); - gtk_main_quit(); -} - - -void on_cfg_okbutton_clicked (GtkButton *button, gpointer user_data) -{ - GtkWidget *deventry; - GtkWidget *rmmenu; - GtkWidget *subQbtn; - GtkWidget *spinC; - GtkWidget *spinS; - char *tmp; - - deventry = lookup_widget (GTK_WIDGET (button), "cddev_entry"); - rmmenu = lookup_widget (GTK_WIDGET (button), "readmode_optionmenu"); - subQbtn = lookup_widget (GTK_WIDGET (button), "subQ_button"); - spinC = lookup_widget (GTK_WIDGET (button), "spinCacheSize"); - spinS = lookup_widget (GTK_WIDGET (button), "spinCdrSpeed"); - - tmp = gtk_entry_get_text (GTK_ENTRY (deventry)); - strcpy(CdromDev, tmp); - ReadMode = gtk_option_menu_get_history (GTK_OPTION_MENU(rmmenu)); - UseSubQ = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(subQbtn)); - CacheSize= gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(spinC)); - CdrSpeed = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(spinS)); - - SaveConf(); - - gtk_widget_destroy(gtk_widget_get_toplevel (GTK_WIDGET (button))); - gtk_main_quit(); -} - - -/*************************************************************************** - * About Dialog. - ***************************************************************************/ - -void on_abt_okbutton_clicked (GtkButton *button, gpointer user_data) -{ - gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (button))); - gtk_main_quit(); -} - - -/*************************************************************************** - * Private functions. - ***************************************************************************/ - -/* - * get_drives_list: retrieves available cd drives. At the moment it use a quite - * ugly "brute force" method: we check for the most common location for cdrom - * in /dev and chech if they are cdrom devices. - * If your cdrom path is not listed here you'll have to type it in the dialog - * entry yourself (or add it here and recompile). - * Are there any other common entry to add to the list? (especially scsi, I - * deliberately ignored old non standard cdroms... ) - * If you come up with a better method let me know!! - */ - -void fill_drives_list(void) -{ - int i = 0; - static char *cdrom_devices[]={ - "/dev/cdrom", - "/dev/cdroms/cdrom0", - "/dev/cdroms/cdrom1", - "/dev/cdroms/cdrom2", - "/dev/cdroms/cdrom3", - "/dev/hda", - "/dev/hdb", - "/dev/hdc", - "/dev/hdd", - "/dev/scd0", - "/dev/scd1", - "/dev/scd2", - "/dev/scd3", - "/dev/optcd", - NULL}; - - /* fisrt we put our current drive */ - driveslist = g_list_append(driveslist, CdromDev); - - /* scan cdrom_devices for real cdrom and add them to driveslist */ - while(cdrom_devices[i] != NULL){ - - /* check that is not our current dev (already in list) */ - if (strcmp(cdrom_devices[i], CdromDev) != 0){ - - /* check that is a cdrom device */ - if (is_cdrom(cdrom_devices[i])){ - driveslist = g_list_append(driveslist, cdrom_devices[i]); - } - } - ++i; - } - - return; -} - - -/* function to check if the device is a cdrom */ -int is_cdrom(char *device){ - struct stat st; - int fd = -1; - - /* check if the file exist */ - if (stat(device, &st) <0) return 0; - - /* check if is a block or char device */ - if (!S_ISCHR(st.st_mode) && !S_ISBLK(st.st_mode)) return 0; - - /* try to open the device file descriptor */ - if ((fd = open(device, O_RDONLY | O_NONBLOCK)) < 0) return 0; - - /* I need a method to check is a device is really a cdrom. - some problems/ideas are: - - different protocls (ide, scsi, old proprietary...) - - maybe we can use major number (see linux/major.h) to do some check. - major number can be retrieved with (st.st_rdev>>8) - scsi has SCSI_CDROM_MAJOR but does this cover all scsi drives? - beside IDE major is the same for hard disks and cdroms... - and DVDs? - - another idea is to parse /proc, but again IDE, scsi etc have - different files... I've not found a way to query "which cd drives - are available?" - - Now I use this ioctl which works also if the drive is empty, - I hope that is implemented for all the drives... here works - fine: at least doesn't let me to select my HD as cds ;) - */ - /* try a ioctl to see if it's a cdrom device */ - if (ioctl(fd, CDROM_GET_CAPABILITY, NULL) < 0){ - close(fd); - return 0; - } - - close(fd); - - /* yes, it seems a cd drive! */ - return 1; -} - -#endif |
