LiVES 1.3.11-svn
src/mainwindow.h
Go to the documentation of this file.
00001 // mainwindow.h
00002 // LiVES (lives-exe)
00003 // (c) G. Finch <salsaman@xs4all.nl> 2003 - 2010
00004 // Released under the GPL 3 or later
00005 // see file ../COPYING for licensing details
00006 
00007 
00008 #ifndef _HAS_MAINWINDOW_H_
00009 #define _HAS_MAINWINDOW_H_
00010 
00011 #include <pthread.h>
00012 
00013 #ifdef ALSA_MIDI
00014 #include <alsa/asoundlib.h>
00015 #endif
00016 
00017 #ifdef HAVE_PULSE_AUDIO
00018 #include "pulse.h"
00019 #endif
00020 
00021 // hardware related prefs
00022 
00026 #define U_SEC 100000000.
00027 #define U_SECL (gint64)100000000
00028 #define U_SEC_RATIO (U_SECL/1000000) ///< how many U_SECs (ticks) in a microsecond
00029 
00030 // parameters for resizing the image frames, and for capture
00031 // TODO - make prefs
00032 #define V_RESIZE_ADJUST 36
00033 #define H_RESIZE_ADJUST 22
00034 
00036 #define SEPWIN_VADJUST 200
00037 
00039 #define DEF_GEN_WIDTH 640
00040 #define DEF_GEN_HEIGHT 480
00041 
00043 #define FN_KEYS 12
00044 
00046 #define FX_KEYS_PHYSICAL 9
00047 
00050 #define FX_KEYS_MAX_VIRTUAL 64
00051 
00053 #define FX_KEYS_MAX 65536
00054 
00055 #define EFFECT_NONE 0
00056 #define GU641 ((guint64)1)
00057 
00058 
00060 #define MAX_EXT_CNTL 2
00061 
00063 typedef enum {
00064   EXT_CNTL_NONE=-1, 
00065   EXT_CNTL_JS=0,
00066   EXT_CNTL_MIDI=1
00067 } lives_ext_cntl_t;
00068 
00069 
00071 typedef enum {
00072   LIVES_TIME_SOURCE_NONE=0,
00073   LIVES_TIME_SOURCE_SYSTEM,
00074   LIVES_TIME_SOURCE_SOUNDCARD,
00075   LIVES_TIME_SOURCE_EXTERNAL
00076 } lives_time_source_t;
00077 
00078 
00079 
00080 typedef enum {
00081   LIVES_TOY_NONE=0,
00082   LIVES_TOY_MAD_FRAMES,
00083   LIVES_TOY_TV,
00084   LIVES_TOY_AUTOLIVES
00085 } lives_toy_t;
00086 
00087 
00088 typedef enum {
00089   LIVES_DIALOG_WARN,
00090   LIVES_DIALOG_YESNO
00091 } lives_dialog_t;
00092 
00094 typedef struct {
00095   gint style;
00096 #define STYLE_PLAIN 0 ///< no theme (theme 'none')
00097 #define STYLE_1 1<<0 ///< turn on theming if set
00098 #define STYLE_2 1<<1 ///< colour the spinbuttons on the front page if set
00099 #define STYLE_3 1<<2 ///< style is lightish - allow themeing of widgets with dark text, otherwise use menu bg
00100 #define STYLE_4 1<<3 ///< coloured bg for poly window in mt
00101 #define STYLE_5 1<<4 ///< drop down menu text col. in mt
00102 #define STYLE_6 1<<4 ///< separator col. in mt
00103 
00104   GdkColor white;
00105   GdkColor black;
00106   GdkColor light_blue;
00107   GdkColor light_yellow;
00108   GdkColor pink;
00109   GdkColor light_red;
00110   GdkColor dark_red;
00111   GdkColor light_green;
00112   GdkColor grey20;
00113   GdkColor grey25;
00114   GdkColor grey45;
00115   GdkColor grey60;
00116   GdkColor dark_orange;
00117   GdkColor fade_colour;
00118   GdkColor normal_back;
00119   GdkColor normal_fore;
00120 
00121   GdkColor menu_and_bars;
00122   GdkColor banner_fade_text;
00123   GdkColor info_text;
00124   GdkColor info_base;
00125 
00126   GdkColor bm_opaque;
00127   GdkColor bm_trans;
00128 
00129 } _palette;
00130 
00131 
00132 typedef struct {
00133   gint x;
00134   gint y;
00135   gint width;
00136   gint height;
00137   GdkScreen *screen;
00138 } lives_mgeometry_t;
00139 
00140 
00142 #define RFX_TOOL_MENU_POSN 2
00143 
00145 typedef struct {
00146   gchar msg[512];
00147 
00148   // files
00149   gint current_file;
00150   gint first_free_file;
00151   file *files[MAX_FILES+1]; 
00152   gchar vid_load_dir[256];
00153   gchar vid_save_dir[256];
00154   gchar audio_dir[256];
00155   gchar image_dir[256];
00156   gchar proj_load_dir[256];
00157   gchar proj_save_dir[256];
00158   gchar xmms_dir[256];
00159   gint untitled_number;
00160   gint cap_number;
00161   gint clips_available;
00162 
00164   GList *cliplist;
00165 
00167   gchar set_name[256];
00168 
00169   // playback
00170   gboolean faded;
00171   gboolean double_size;
00172   gboolean sep_win;
00173   gboolean fs;
00174   gboolean loop;
00175   gboolean loop_cont;
00176   gboolean ping_pong;
00177   gboolean mute;
00178   gboolean must_resize; 
00179   gint audio_start;
00180   gint audio_end;
00181 
00182   gboolean ext_playback; 
00183   gboolean ext_keyboard; 
00184 
00185   gint ptr_x;
00186   gint ptr_y;
00187 
00188   gdouble fps_measure; 
00189 
00190 
00191   // flags
00192   gboolean save_with_sound;
00193   gboolean ccpd_with_sound;
00194   gboolean selwidth_locked;
00195   gboolean is_ready;
00196   gboolean opening_loc;  
00197   gboolean dvgrab_preview;
00198   gboolean switch_during_pb;
00199   gboolean clip_switched; 
00200   gboolean record;
00201 
00202   gboolean in_fs_preview;
00203   volatile lives_cancel_t cancelled;
00204 
00205   gboolean error;
00206 
00207   lives_cancel_type_t cancel_type;
00208 
00209   weed_plant_t *event_list; 
00210   weed_plant_t *stored_event_list; 
00211   gboolean stored_event_list_changed;
00212   gboolean stored_layout_save_all_vals;
00213   gchar stored_layout_name[256];
00214 
00215   GList *stored_layout_undos;
00216   size_t sl_undo_buffer_used;
00217   unsigned char *sl_undo_mem;
00218   gint sl_undo_offset;
00219 
00220   gshort endian;
00221 
00222   gint pwidth; 
00223   gint pheight; 
00224 
00225   lives_whentostop_t whentostop;
00226 
00227   gboolean noframedrop;
00228 
00229   gint play_start;
00230   gint play_end;
00231   gboolean playing_sel;
00232   gboolean preview;
00233 
00234   gboolean is_processing;
00235   gboolean is_rendering;
00236   gboolean resizing;
00237 
00238   gboolean foreign;  
00239   gboolean record_foreign;
00240   gboolean t_hidden;
00241 
00242   // recording from an external window
00243   guint foreign_key;
00244   unsigned int foreign_id;
00245   GdkColormap *foreign_cmap;
00246   GdkPixmap *foreign_map;
00247   gint foreign_width;
00248   gint foreign_height;
00249   gint foreign_bpp;
00250 
00252   gboolean nervous;
00253 
00254   lives_rfx_t *rendered_fx;
00255   gint num_rendered_effects_builtin;
00256   gint num_rendered_effects_custom;
00257   gint num_rendered_effects_test;
00258 
00259   // for the merge dialog
00260   gint last_transition_idx;
00261   gint last_transition_loops;
00262   gboolean last_transition_loop_to_fit;
00263   gboolean last_transition_align_start;
00264   gboolean last_transition_ins_frames;
00265 
00266 
00267   guint64 rte; 
00268 
00269   guint last_grabable_effect;
00270   guint rte_keys; 
00271   gint num_tr_applied; 
00272   gdouble blend_factor; 
00273   
00274   gint blend_file;
00275   gint last_blend_file;
00276 
00277   gint scrap_file; 
00278 
00280   gint playing_file;
00281 
00282   gint pre_src_file; 
00283 
00284   gint scr_width;
00285   gint scr_height;
00286   lives_toy_t toy_type;
00287 
00288   gboolean toy_go_wild;
00289 
00290   // copy/paste
00291   gboolean insert_after;
00292   gboolean with_sound;
00293 
00294   // selection
00295   gint sel_start;
00296   gshort sel_move;
00297 
00299 #define SEL_MOVE_START 1
00300 #define SEL_MOVE_END 2
00301 #define SEL_MOVE_AUTO 3
00302 #define SEL_MOVE_SINGLE 4
00303 
00304   // prefs (Save on exit)
00305   gint prefs_changed;
00306 #define PREFS_THEME_CHANGED (1<<0)
00307 #define PREFS_JACK_CHANGED (1<<1)
00308 #define PREFS_TEMPDIR_CHANGED (1<<2)
00309   gboolean prefs_need_restart;
00310 
00312   gint def_width;
00313   gint def_height;
00314 
00316   gint framedraw_frame;
00317 
00318 
00320 
00321   // end of static-ish info
00322   gboolean save_all;
00323   gchar first_info_file[256];
00324   gboolean leave_files;
00325   gboolean was_set;
00326 
00328   gchar *file_open_params;
00329   gboolean open_deint;
00330 
00331   gint last_dprint_file;
00332   gboolean no_switch_dprint;
00333 
00335   gint actual_frame;
00336 
00338   gdouble aframeno;
00339 
00340   // ticks are measured in 1/U_SEC of a second (by defalt a tick is 10 nano seconds)
00341 
00342   // for the internal player
00343   gdouble period; 
00344   gint64 startticks; 
00345   gint64 timeout_ticks; 
00346   gint64 origsecs; 
00347   gint64 origusecs; 
00348   gint64 offsetticks; 
00349   gint64 currticks; 
00350   gint64 deltaticks; 
00351   gint64 firstticks; 
00352   gint64 stream_ticks;  
00353 
00354   gboolean size_warn; 
00355 
00358   gboolean noswitch; 
00359   gint new_clip;
00360 
00361   gint aud_file_to_kill; 
00362 
00363   gboolean reverse_pb; 
00364 
00366   gboolean osc_block;
00367 
00368   gboolean osc_auto; 
00369 
00371   gint osc_enc_width;
00372   gint osc_enc_height;
00373 
00374 
00376   gint fixed_fps_numer;
00377   gint fixed_fps_denom;
00378   gdouble fixed_fpsd; 
00379 
00381   gboolean write_vpp_file;
00382 
00383   volatile gshort scratch;
00384 #define SCRATCH_NONE 0
00385 #define SCRATCH_BACK -1
00386 #define SCRATCH_FWD 1
00387 #define SCRATCH_JUMP 2
00388 
00390   gboolean internal_messaging;
00391   gint (*progress_fn) (gboolean reset);
00392 
00393   volatile gboolean threaded_dialog;
00394 
00395   // fx controls
00396   gdouble fx1_val;
00397   gdouble fx2_val;
00398   gdouble fx3_val;
00399   gdouble fx4_val;
00400   gdouble fx5_val;
00401   gdouble fx6_val;
00402 
00403   gint fx1_start;
00404   gint fx2_start;
00405   gint fx3_start;
00406   gint fx4_start;
00407 
00408   gint fx1_step;
00409   gint fx2_step;
00410   gint fx3_step;
00411   gint fx4_step;
00412 
00413   gint fx1_end;
00414   gint fx2_end;
00415   gint fx3_end;
00416   gint fx4_end;
00417 
00418   gboolean fx1_bool;
00419   gboolean fx2_bool;
00420   gboolean fx3_bool;
00421   gboolean fx4_bool;
00422   gboolean fx5_bool;
00423   gboolean fx6_bool;
00424 
00425   gboolean effects_paused;
00426   gboolean did_rfx_preview;
00427 
00428   //function pointers
00429   guint kb_timer;
00430   gulong config_func;
00431   gulong pb_fps_func;
00432   gulong spin_start_func;
00433   gulong spin_end_func;
00434   gulong record_perf_func;
00435   gulong vidbar_func;
00436   gulong laudbar_func;
00437   gulong raudbar_func;
00438   gulong hrule_func;
00439   gulong toy_func_none;
00440   gulong toy_func_random_frames;
00441   gulong toy_func_lives_tv;
00442   gulong hnd_id;
00443   gulong loop_cont_func;
00444   gulong mute_audio_func;
00445 
00446   // for jack transport
00447   gboolean jack_can_stop;
00448   gboolean jack_can_start;
00449 
00450   volatile gboolean video_seek_ready;
00451 
00452   // selection pointers
00453   gulong mouse_fn1;
00454   gboolean mouse_blocked;
00455   gboolean hrule_blocked;
00456 
00458   gint clipstore[FN_KEYS-1];
00459 
00461   GdkGC *gc;
00462 
00464   guint ksnoop;
00465 
00466   lives_mt *multitrack;
00467 
00468   gint new_blend_file;
00469 
00470   // Widgets  -- TODO - move into sub struct mainw->widgets->*
00471   GdkNativeWindow xwin;
00472   GtkTooltips *tooltips;
00473   GtkWidget *frame1;
00474   GtkWidget *frame2;
00475   GtkWidget *playframe;
00476   GdkPixbuf *imframe;
00477   GdkPixbuf *camframe;
00478   GdkPixbuf *imsep;
00479   GtkWidget *LiVES;
00480   GtkWidget *open;
00481   GtkWidget *open_sel;
00482   GtkWidget *open_vcd_menu;
00483   GtkWidget *open_vcd_submenu;
00484   GtkWidget *open_vcd;
00485   GtkWidget *open_dvd;
00486   GtkWidget *open_loc;
00487   GtkWidget *open_yuv4m;
00488   GtkWidget *open_lives2lives;
00489   GtkWidget *send_lives2lives;
00490   GtkWidget *open_device_menu;
00491   GtkWidget *open_device_submenu;
00492   GtkWidget *open_firewire;
00493   GtkWidget *open_hfirewire;
00494   GtkWidget *add_live_menu;
00495   GtkWidget *recent_menu;
00496   GtkWidget *recent_submenu;
00497   GtkWidget *recent1;
00498   GtkWidget *recent2;
00499   GtkWidget *recent3;
00500   GtkWidget *recent4;
00501   GtkWidget *save_as;
00502   GtkWidget *backup;
00503   GtkWidget *restore;
00504   GtkWidget *save_selection;
00505   GtkWidget *close;
00506   GtkWidget *import_proj;
00507   GtkWidget *export_proj;
00508   GtkWidget *sw_sound;
00509   GtkWidget *clear_ds;
00510   GtkWidget *ccpd_sound;
00511   GtkWidget *quit;
00512   GtkWidget *undo;
00513   GtkWidget *redo;
00514   GtkWidget *copy;
00515   GtkWidget *cut;
00516   GtkWidget *insert;
00517   GtkWidget *paste_as_new;
00518   GtkWidget *merge;
00519   GtkWidget *delete;
00520   GtkWidget *select_submenu;
00521   GtkWidget *select_all;
00522   GtkWidget *select_new;
00523   GtkWidget *select_to_end;
00524   GtkWidget *select_from_start;
00525   GtkWidget *select_start_only;
00526   GtkWidget *select_end_only;
00527   GtkWidget *select_last;
00528   GtkWidget *select_invert;
00529   GtkWidget *lock_selwidth;
00530   GtkWidget *record_perf;
00531   GtkWidget *playall;
00532   GtkWidget *playsel;
00533   GtkWidget *playclip;
00534   GtkWidget *rev_clipboard;
00535   GtkWidget *stop;
00536   GtkWidget *rewind;
00537   GtkWidget *full_screen;
00538   GtkWidget *loop_video;
00539   GtkWidget *loop_continue;
00540   GtkWidget *loop_ping_pong;
00541   GtkWidget *sepwin;
00542   GtkWidget *mute_audio;
00543   GtkWidget *sticky;
00544   GtkWidget *showfct;
00545   GtkWidget *showsubs;
00546   GtkWidget *aload_subs;
00547   GtkWidget *load_subs;
00548   GtkWidget *erase_subs;
00549   GtkWidget *fade;
00550   GtkWidget *dsize;
00551 
00552   GtkWidget *change_speed;
00553   GtkWidget *capture;
00554   GtkWidget *load_audio;
00555   GtkWidget *load_cdtrack;
00556   GtkWidget *eject_cd;
00557   GtkWidget *recaudio_submenu;
00558   GtkWidget *recaudio_clip;
00559   GtkWidget *recaudio_sel;
00560   GtkWidget *export_submenu;
00561   GtkWidget *export_allaudio;
00562   GtkWidget *export_selaudio;
00563   GtkWidget *append_audio;
00564   GtkWidget *trim_submenu;
00565   GtkWidget *trim_audio;
00566   GtkWidget *trim_to_pstart;
00567   GtkWidget *delaudio_submenu;
00568   GtkWidget *delsel_audio;
00569   GtkWidget *delall_audio;
00570   GtkWidget *ins_silence;
00571   GtkWidget *fade_aud_in;
00572   GtkWidget *fade_aud_out;
00573   GtkWidget *resample_audio;
00574   GtkWidget *resample_video;
00575   GtkWidget *preferences;
00576   GtkWidget *xmms_play_audio;
00577   GtkWidget *xmms_random_audio;
00578   GtkWidget *xmms_stop_audio;
00579   GtkWidget *rename;
00580   GtkWidget *toys;
00581   GtkWidget *toy_none;
00582   GtkWidget *toy_random_frames;
00583   GtkWidget *toy_tv;
00584   GtkWidget *show_file_info;
00585   GtkWidget *show_file_comments;
00586   GtkWidget *show_clipboard_info;
00587   GtkWidget *show_messages;
00588   GtkWidget *show_layout_errors;
00589   GtkWidget *sel_label;
00590   GtkAccelGroup *accel_group;
00591   GtkWidget *sep_image;
00592   GtkWidget *hruler;
00593   GtkWidget *vj_menu;
00594   GtkWidget *vj_save_set;
00595   GtkWidget *vj_load_set;
00596   GtkWidget *vj_show_keys;
00597   GtkWidget *rte_defs_menu;
00598   GtkWidget *rte_defs;
00599   GtkWidget *save_rte_defs;
00600   GtkWidget *vj_reset;
00601   GtkWidget *mt_menu;
00602   GtkWidget *troubleshoot;
00603 
00605   GtkWidget *fs_playarea;
00606   GtkWidget *fs_playframe;
00607 
00609   GtkWidget *framedraw; 
00610   GtkWidget *framedraw_reset; 
00611   GtkWidget *framedraw_preview; 
00612   GtkWidget *framedraw_spinbutton; 
00613   GtkWidget *framedraw_scale; 
00614   GtkWidget *framedraw_image; 
00615   GtkWidget *fd_frame; 
00616 
00617   GdkPixmap *framedraw_orig_pixmap; 
00618   GdkPixmap *framedraw_copy_pixmap; 
00619   GdkBitmap *framedraw_bitmap; 
00620   GdkGC *framedraw_bitmapgc;  
00621   GdkGC *framedraw_colourgc;  
00622 
00623   // bars here -> actually text above bars
00624   GtkWidget *vidbar;
00625   GtkWidget *laudbar;
00626   GtkWidget *raudbar;
00627 
00628 #define MAIN_SPIN_SPACER 52 ///< pixel spacing for start/end spins for clip and multitrack editors
00629   GtkWidget *spinbutton_end;
00630   GtkWidget *spinbutton_start;
00631 
00632   GtkWidget *arrow1;
00633   GtkWidget *arrow2;
00634 
00635   GdkCursor *cursor;
00636 
00637   weed_plant_t *filter_map;
00638   void ***pchains;
00639 
00640   // for the internal player
00641   GtkWidget *image274;
00642   GtkWidget *play_window;
00643   weed_plant_t *frame_layer;
00644   GtkWidget *plug1;
00645   gulong pw_exp_func;
00646   gboolean pw_exp_is_blocked;
00647 
00648   // frame preview in the separate window
00649   GtkWidget *preview_box;
00650   GtkWidget *preview_image;
00651   GtkWidget *preview_spinbutton;
00652   GtkWidget *preview_scale;
00653   gint preview_frame;
00654   gulong preview_spin_func;
00655   gint prv_link;
00656 #define PRV_FREE 0
00657 #define PRV_START 1
00658 #define PRV_END 2
00659 #define PRV_PTR 3
00660 
00661   GtkWidget *image272;
00662   GtkWidget *image273;
00663   GtkWidget *playarea;
00664   GtkWidget *hseparator;
00665   GtkWidget *scrolledwindow;
00666   GtkWidget *message_box;
00667   GtkWidget *warning_label;
00668 
00669   GtkWidget *textview1;
00670   GtkWidget *winmenu;
00671   GtkWidget *eventbox;
00672   GtkWidget *eventbox2;
00673   GtkWidget *eventbox3;
00674   GtkWidget *eventbox4;
00675   GtkWidget *eventbox5;
00676 
00677   // toolbar buttons
00678   GtkWidget *t_stopbutton;
00679   GtkWidget *t_bckground;
00680   GtkWidget *t_fullscreen;
00681   GtkWidget *t_sepwin;
00682   GtkWidget *t_double;
00683   GtkWidget *t_infobutton;
00684 
00685   GtkWidget *t_slower;
00686   GtkWidget *t_faster;
00687   GtkWidget *t_forward;
00688   GtkWidget *t_back;
00689 
00690   GtkWidget *t_hide;
00691 
00692   GtkWidget *toolbar;
00693   GtkWidget *tb_hbox;
00694   GtkWidget *fs1;
00695   GtkWidget *vbox1;
00696 
00697   GtkWidget *volume_scale;
00698   GtkWidget *vol_toolitem;
00699   GtkWidget *vol_label;
00700 
00701   // menubar buttons
00702   GtkWidget *btoolbar; 
00703   GtkWidget *m_sepwinbutton;
00704   GtkWidget *m_playbutton;
00705   GtkWidget *m_stopbutton;
00706   GtkWidget *m_playselbutton;
00707   GtkWidget *m_rewindbutton;
00708   GtkWidget *m_loopbutton;
00709   GtkWidget *m_mutebutton;
00710   GtkWidget *menu_hbox;
00711   GtkWidget *menubar;
00712 
00713   // separate window
00714   gint opwx;
00715   gint opwy;
00716 
00717   // sepwin buttons
00718   GtkWidget *p_playbutton;
00719   GtkWidget *p_playselbutton;
00720   GtkWidget *p_rewindbutton;
00721   GtkWidget *p_loopbutton;
00722   GtkWidget *p_mutebutton;
00723   GtkWidget *p_mute_img;
00724 
00725   // timer bars
00726   GtkWidget *video_draw;
00727   GdkPixmap *video_drawable;
00728   GtkWidget *laudio_draw;
00729   GdkPixmap *laudio_drawable;
00730   GtkWidget *raudio_draw;
00731   GdkPixmap *raudio_drawable;
00732 
00733   // framecounter
00734   GtkWidget *framebar;
00735   GtkWidget *framecounter;
00736   GtkWidget *spinbutton_pb_fps;
00737   GtkWidget *vps_label;
00738   GtkWidget *curf_label;
00739   GtkWidget *banner;
00740 
00741   // rendered effects
00742   GtkWidget *effects_menu;
00743   GtkWidget *tools_menu;
00744   GtkWidget *utilities_menu;
00745   GtkWidget *utilities_submenu;
00746   GtkWidget *gens_menu;
00747   GtkWidget *gens_submenu;
00748   GtkWidget *run_test_rfx_submenu;
00749   GtkWidget *run_test_rfx_menu;
00750   GtkWidget *custom_effects_menu;
00751   GtkWidget *custom_effects_submenu;
00752   GtkWidget *custom_effects_separator;
00753   GtkWidget *custom_tools_menu;
00754   GtkWidget *custom_tools_submenu;
00755   GtkWidget *custom_tools_separator;
00756   GtkWidget *custom_gens_menu;
00757   GtkWidget *custom_gens_submenu;
00758   GtkWidget *custom_utilities_menu;
00759   GtkWidget *custom_utilities_submenu;
00760   GtkWidget *custom_utilities_separator;
00761   GtkWidget *rte_separator;
00762   GtkWidget *invis;
00763 
00764   gint num_tracks;
00765   gint *clip_index;
00766   gint *frame_index;
00767 
00768   GtkWidget *resize_menuitem;
00769 
00770   gboolean only_close; 
00771 
00772 #ifdef ENABLE_JACK
00773   jack_driver_t *jackd; 
00774   jack_driver_t *jackd_read; 
00775 #define RT_AUDIO
00776 #else
00777   void *jackd;  
00778   void *jackd_read; 
00779 #endif
00780 
00781 #ifdef HAVE_PULSE_AUDIO
00782   pulse_driver_t *pulsed; 
00783   pulse_driver_t *pulsed_read; 
00784 #define RT_AUDIO
00785 #else
00786   void *pulsed;
00787   void *pulsed_read;
00788 #endif
00789 
00790   // layouts
00791   GtkTextBuffer *layout_textbuffer; 
00792   GList *affected_layouts_map; 
00793   GList *current_layouts_map; 
00794 
00797   GList *affected_layout_marks;
00798 
00800   GList *xlays;
00801 
00802   gchar *recovery_file;  
00803   gboolean leave_recovery;
00804 
00805   gboolean unordered_blocks; 
00806 
00807   gboolean no_exit; 
00808 
00809   mt_opts multi_opts; 
00810 
00811   gint rec_aclip;
00812   gdouble rec_avel;
00813   gdouble rec_aseek;
00814 
00815   gpointer do_not_free; 
00816   GMemVTable alt_vtable;
00817   void (*free_fn)(gpointer);
00818 
00819   pthread_mutex_t gtk_mutex;  
00820   pthread_mutex_t interp_mutex;  
00821 
00822   pthread_mutex_t abuf_mutex;  
00823 
00824   lives_fx_candidate_t fx_candidates[MAX_FX_CANDIDATE_TYPES]; 
00825 
00826   GList *cached_list;  
00827   FILE *clip_header;
00828 
00829   gfloat volume; 
00830 
00831   int aud_rec_fd; 
00832   gdouble rec_end_time;
00833   long rec_samples;
00834   gdouble rec_fps;
00835   gint rec_vid_frames;
00836   gint rec_arate;
00837   gint rec_achans;
00838   gint rec_asamps;
00839   gint rec_signed_endian;
00840 
00841   gboolean suppress_dprint; 
00842   gchar *any_string;  
00843   gchar *none_string;  
00844   gchar *recommended_string;  
00845   gchar *disabled_string;  
00846   gchar *cl_string; 
00847 
00848   gint opening_frames; 
00849 
00850   gboolean show_procd; 
00851 
00852   gboolean block_param_updates; 
00853   gboolean no_interp; 
00854 
00855   gdouble fd_scale; 
00856 
00857   weed_timecode_t cevent_tc; 
00858 
00859   gboolean opening_multi; 
00860 
00861   gboolean record_paused; 
00862   gboolean record_starting; 
00863 
00864   gint img_concat_clip;  
00865 
00866   GdkGC *general_gc;  
00867 
00869   gboolean gen_to_clipboard;
00870   gboolean is_generating;
00871 
00872   gboolean keep_pre;
00873 
00874   GtkWidget *textwidget_focus;
00875 
00876   _vid_playback_plugin *vpp;
00877 
00879   lives_mgeometry_t *mgeom;
00880 
00881 
00883   gboolean ext_cntl[MAX_EXT_CNTL];
00884 
00885   #ifdef ALSA_MIDI
00886   snd_seq_t *seq_handle;
00887   int alsa_midi_port;
00888   #endif
00889 
00890   weed_plant_t *rte_textparm; 
00891 
00892   gint write_abuf; 
00893   volatile gint abufs_to_fill;
00894 
00895   GtkWidget *splash_window;
00896   GtkWidget *splash_label;
00897   GtkWidget *splash_progress;
00898 
00899   gboolean recoverable_layout;
00900 
00901   gboolean soft_debug; 
00902 
00904   GIOChannel *iochan;
00905   GtkTextView *optextview;
00906 
00908   pthread_t sig_pid;
00909   gchar *sig_file;
00910 
00912   gboolean decoders_loaded;
00913   GList *decoder_list;
00914 
00915   gboolean go_away;
00916   gboolean debug; 
00917 
00918   gchar *subt_save_file; 
00919 
00920   gchar **fonts_array;
00921   gint nfonts;
00922 
00923   GtkTargetEntry *target_table; 
00924 
00925   GList *videodevs;
00926 
00927   gchar vpp_defs_file[PATH_MAX];
00928 
00929 } mainwindow;
00930 
00931 GdkCursor *hidden_cursor;
00932 
00933 extern _palette *palette;
00934 
00935 typedef struct {
00936   gulong ins_frame_function;
00937 
00938   GtkWidget *merge_dialog;
00939   GtkWidget *ins_frame_button;
00940   GtkWidget *drop_frame_button;
00941   GtkWidget *param_vbox;
00942   GtkWidget *spinbutton_loops;
00943   GtkWidget *trans_entry;
00944 
00945   gboolean loop_to_fit;
00946   gboolean align_start;
00947   gboolean ins_frames;
00948   int *list_to_rfx_index;
00949   GList *trans_list;
00950 
00951 } _merge_opts;
00952 
00953 extern _merge_opts* merge_opts;
00954 
00956 extern GtkWidget *fx_dialog[2];
00957 
00958 
00959 
00960 #ifdef ENABLE_JACK
00961   volatile aserver_message_t jack_message;
00962   volatile aserver_message_t jack_message2;
00963 #endif
00964 
00965 #ifdef HAVE_PULSE_AUDIO
00966   volatile aserver_message_t pulse_message;
00967   volatile aserver_message_t pulse_message2;
00968 #endif
00969 
00970 #endif // HAS_MAINWINDOW_H
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines