LiVES 1.4.9

src/mainwindow.h

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