LiVES 1.4.9
|
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