📄 main.c
字号:
/*** Sinek (Media Player)** Copyright (c) 2001-2002 Gurer Ozen**** This code is free software; you can redistribute it and/or** modify it under the terms of the GNU General Public License.**** main*/#include "common.h"struct sinek_globals sinek;sinek_type *media;static int stream_finished = 0;static void event_listener(void *this, xine_event_t *event);static gboolean second_update(gpointer data);#ifdef USE_GUILE#include <guile/gh.h>/* this strange code is necessary for guile's garbage collector */void inner_main(int argc, char *argv[]);int main(int argc, char *argv[]){ gh_enter(argc, argv, inner_main); return 0;}void inner_main(int argc, char *argv[])#elseint main(int argc, char *argv[])#endif{ memset(&sinek, 0, sizeof(sinek)); sinek.repeat_all = ~0; sinek.video_mode = VIDEO_WINDOW; sinek.geo_w = 320; sinek.geo_h = 180; srand(time(NULL)); gtk_set_locale(); xine_set_locale(); bindtextdomain(PACKAGE, XINE_LOCALEDIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); textdomain(PACKAGE); guile_init(); gtk_init(&argc, &argv); if(!XInitThreads()) { puts(_("XInitThreads() failed, your X library is not thread-safe.")); exit(5); } prf_init(argc, argv); media = sinek_new(); if(!video_init()) exit(5); if(!audio_init()) exit(5); key_init(); wm_build(control_build); control_update_slider(0, 0); popup_init(); xine_register_event_listener(sinek.xine, event_listener, &sinek); pl_init(); scrsaver_init(); g_timeout_add(500, (GSourceFunc)second_update, NULL); osd_init(); if(sinek.script) guile_execute(sinek.script); if(sinek.start_mrls) { g_list_foreach(sinek.start_mrls, (GFunc) pl_append, NULL); g_list_foreach(sinek.start_mrls, (GFunc) g_free, NULL); g_list_free(sinek.start_mrls); sinek.start_mrls = NULL; pl_next(); } if(!sinek.hide_gui) wm_show(control_build); gtk_main(); exit(0);}static gboolean second_update(gpointer data){ if(stream_finished) { if(!guile_stop_hook()) { if(sinek.playing) { if(sinek.repeat_one) video_seek(0); else pl_next(); } } stream_finished = 0; } if(xine_get_status(sinek.xine) == XINE_PLAY) { if(!sinek.seeking) { control_update_slider(xine_get_current_time(sinek.xine), xine_get_stream_length(sinek.xine)); } if(sinek.osd_subtitles) osd_update(); if(++sinek.cursor_timer == 3) video_cursor(0); } return TRUE;}static void event_listener(void *this, xine_event_t *event){ switch(event->type) { case XINE_EVENT_PLAYBACK_FINISHED: if(!stream_finished) stream_finished = 1; break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -