OSDN Git Service

[Build][Win32] Separate GUI(and fmgen and emuutils) to separate DLLs.
[csp-qt/common_source_project-fm7.git] / source / src / qt / osd_base.h
index 7be54c6..8ae6fe6 100644 (file)
@@ -20,6 +20,7 @@
 #include <QString>
 #include <QQueue>
 #include <QImage>
+#include <QList>
 
 #include <SDL.h>
 #include "simd_types.h"
@@ -52,7 +53,7 @@
 
 #include "qt_main.h"
 //#include "mainwidget.h"
-#include "agar_logger.h"
+#include "config.h"
 
 class GLDrawClass;
 class EmuThreadClass;
@@ -63,8 +64,14 @@ class VM;
 class FIFO;
 class CSP_KeyTables;
 class USING_FLAGS;
-
+class CSP_LOGGER;
 QT_BEGIN_NAMESPACE
+
+typedef struct {
+       int id;
+       const _TCHAR *name;
+} device_node_t;
+
 class DLL_PREFIX OSD_BASE : public QThread
 {
        Q_OBJECT
@@ -73,7 +80,10 @@ protected:
        QSemaphore *VMSemaphore;
        QSemaphore *DebugSemaphore;
        sdl_snddata_t snddata;
-
+       USING_FLAGS *using_flags;
+       config_t *p_config;
+       CSP_Logger *csp_logger;
+       
        _TCHAR app_path[_MAX_PATH];
        QElapsedTimer osd_timer;
        bool locked_vm;
@@ -112,7 +122,7 @@ protected:
        int mouse_button;
        int mouse_oldx;
        int mouse_oldy;
-       Qt::CursorShape mouse_shape;
+       //Qt::CursorShape mouse_shape;
        
        QImage background_image;
        QImage button_images[N_MAX_BUTTONS];
@@ -141,12 +151,10 @@ protected:
        int base_window_width, base_window_height;
        int vm_screen_width, vm_screen_height;
        int draw_screen_width, draw_screen_height;
-       
+       int rec_video_nsec, rec_video_fps_nsec;
        
        _TCHAR video_file_name[_MAX_PATH];
        int rec_video_fps;
-       double rec_video_run_frames;
-       double rec_video_frames;
        
        uint64_t dwAVIFileSize;
        uint64_t lAVIFrames;
@@ -187,9 +195,9 @@ protected:
        SDL_AudioSpec snd_spec_req, snd_spec_presented;
        
        // video device
-       void initialize_video();
-       void release_video();
-       
+       virtual void initialize_video();
+       virtual void release_video();
+  
        bitmap_t dshow_screen_buffer;
        int direct_show_width, direct_show_height;
        bool direct_show_mute[2];
@@ -209,17 +217,16 @@ protected:
        bool prn_strobe;
 
        // socket
-       void initialize_socket();
-       void release_socket();
+       virtual void initialize_socket();
+       virtual void release_socket();
        
-       int soc[SOCKET_MAX];
        bool is_tcp[SOCKET_MAX];
-       //struct sockaddr_in udpaddr[SOCKET_MAX];
+       bool host_mode[SOCKET_MAX];
        int socket_delay[SOCKET_MAX];
-       char recv_buffer[SOCKET_MAX][SOCKET_BUFFER_MAX];
-       int recv_r_ptr[SOCKET_MAX], recv_w_ptr[SOCKET_MAX];
 
        // wrapper
+       int max_vm_nodes;
+       QList<device_node_t> device_node_list;
        virtual void vm_draw_screen(void);
        virtual Sint16* create_sound(int *extra_frames);
        virtual bool get_use_socket(void);
@@ -243,8 +250,10 @@ protected:
        virtual int get_screen_height(void);
        virtual int get_vm_buttons_code(int num);
 
+       virtual void init_sound_files();
+       virtual void release_sound_files();
 public:
-       OSD_BASE();
+       OSD_BASE(USING_FLAGS *p, CSP_Logger *logger);
        ~OSD_BASE();
        
        // common
@@ -252,6 +261,8 @@ public:
        //EMU* emu;
        class Ui_MainWindow *main_window_handle;
        GLDrawClass *glv;
+       QMutex *screen_mutex;
+       
        int host_cpus;
        bool now_auto_key;
        
@@ -323,6 +334,7 @@ public:
        int get_vm_window_height_aspect();
        scrntype_t* get_vm_screen_buffer(int y);
        int draw_screen();
+       int no_draw_screen();
        void reload_bitmap();
        void capture_screen();
        bool start_record_video(int fps);
@@ -340,17 +352,20 @@ public:
        void restart_record_sound();
        bool now_record_sound;
        int get_sound_rate();
+       // Wrapper : Sound
+       virtual void load_sound_file(int id, const _TCHAR *name, int16_t **data, int *dst_size);
+       virtual void free_sound_file(int id, int16_t **data);
        
        // common video device
-       void get_video_buffer();
+       virtual void get_video_buffer();
        void mute_video_dev(bool l, bool r);
-       bool open_movie_file(const _TCHAR* file_path);
-       void close_movie_file();
+       virtual bool open_movie_file(const _TCHAR* file_path);
+       virtual void close_movie_file();
        void play_movie();
        void stop_movie();
        void pause_movie();
        double get_movie_frame_rate();
-       int get_movie_sound_rate();
+       virtual int get_movie_sound_rate();
        void set_cur_movie_frame(int frame, bool relative);
        uint32_t get_cur_movie_frame();
        bool now_movie_play, now_movie_pause;
@@ -384,19 +399,19 @@ public:
        void write_bitmap_to_file(bitmap_t *bitmap, const _TCHAR *file_path);
 
        // common socket
-       int get_socket(int ch);
-       void notify_socket_connected(int ch);
-       void notify_socket_disconnected(int ch);
-       void update_socket();
-       bool initialize_socket_tcp(int ch);
-       bool initialize_socket_udp(int ch);
-       bool connect_socket(int ch, uint32_t ipaddr, int port);
-       void disconnect_socket(int ch);
-       bool listen_socket(int ch);
-       void send_socket_data_tcp(int ch);
-       void send_socket_data_udp(int ch, uint32_t ipaddr, int port);
-       void send_socket_data(int ch);
-       void recv_socket_data(int ch);
+       virtual int get_socket(int ch);
+       virtual void notify_socket_connected(int ch);
+       virtual void notify_socket_disconnected(int ch);
+       virtual void update_socket();
+       virtual bool initialize_socket_tcp(int ch);
+       virtual bool initialize_socket_udp(int ch);
+       virtual bool connect_socket(int ch, uint32_t ipaddr, int port);
+       virtual void disconnect_socket(int ch);
+       virtual bool listen_socket(int ch);
+       virtual void send_socket_data_tcp(int ch);
+       virtual void send_socket_data_udp(int ch, uint32_t ipaddr, int port);
+       virtual void send_socket_data(int ch);
+       virtual void recv_socket_data(int ch);
 
        // win32 dependent
        void update_screen();
@@ -414,6 +429,11 @@ public:
        virtual QString get_vm_config_name(void);
        virtual double vm_frame_rate(void);
        
+       virtual void reset_vm_node(void);
+       virtual void set_vm_node(int id, const _TCHAR *name);
+       virtual const _TCHAR *get_vm_node_name(int id);
+       virtual int get_vm_node_size(void);
+
 public slots:
        void do_write_inputdata(QString s);
        void do_set_input_string(QString s);
@@ -422,6 +442,11 @@ public slots:
        void do_assign_js_setting(int jsnum, int axis_idx, int assigned_value);
        void upload_bitmap(QImage *p);
        void set_buttons();
+       void do_start_record_video();
+       virtual void do_decode_movie(int frames);
+       void do_video_movie_end(bool flag);
+       void do_video_decoding_error(int num);
+       virtual void do_run_movie_audio_callback(uint8_t *data, long len);
 signals:
        int sig_update_screen(bitmap_t *);
        int sig_save_screen(const char *);
@@ -429,7 +454,7 @@ signals:
        int sig_resize_vm_screen(QImage *, int, int);
        int sig_put_string_debugger(QString);
        int sig_console_input_string(QString);
-       int sig_enqueue_video(QImage *); 
+       int sig_enqueue_video(int, int, int, QImage *); 
        int sig_enqueue_audio(int16_t *data, int size);
        int sig_movie_set_width(int);
        int sig_movie_set_height(int);
@@ -437,6 +462,15 @@ signals:
        int sig_req_encueue_video(int, int, int);
        int sig_save_as_movie(QString, int, int);
        int sig_stop_saving_movie();
+
+       int sig_movie_play();
+       int sig_movie_stop();
+       int sig_movie_pause(bool);
+       int sig_movie_seek_frame(bool, int);
+
+       int sig_update_device_node_name(int id, const _TCHAR *name);
+       int sig_enable_mouse(void);
+       int sig_disable_mouse(void);
 };
 QT_END_NAMESPACE