void Java_com_acsoftware_android_domophone_LibLP_nsetVideoWindowId(JNIEnv* env ,jobject thiz ,jobject obj) { jobject oldWindow = (jobject) linphone_core_get_native_video_window_id(lc); if (obj != NULL) { obj = env->NewGlobalRef(obj); } linphone_core_set_native_video_window_id(lc,(void*)obj); if (oldWindow != NULL) { env->DeleteGlobalRef(oldWindow); } }
void linphone_gtk_in_call_show_video(LinphoneCall *call){ GtkWidget *callview=(GtkWidget*)linphone_call_get_user_pointer(call); GtkWidget *video_window=(GtkWidget*)g_object_get_data(G_OBJECT(callview),"video_window"); const LinphoneCallParams *params=linphone_call_get_current_params(call); LinphoneCore *lc=linphone_gtk_get_core(); if (((bool_t)lp_config_get_int(linphone_core_get_config(lc), "video", "rtp_io", FALSE)) == FALSE) { if (linphone_call_get_state(call)!=LinphoneCallPaused && params && linphone_call_params_video_enabled(params)){ if (video_window==NULL){ video_window=create_video_window(call); g_object_set_data(G_OBJECT(callview),"video_window",video_window); } linphone_core_set_native_video_window_id(lc,get_native_handle(gtk_widget_get_window(video_window))); gtk_window_present(GTK_WINDOW(video_window)); }else{ if (video_window){ gtk_widget_destroy(video_window); g_object_set_data(G_OBJECT(callview),"video_window",NULL); } } } }
/* * Initialize linphonec */ static int linphonec_init(int argc, char **argv) { //g_mem_set_vtable(&dbgtable); /* * Set initial values for global variables */ mylogfile = NULL; #ifndef _WIN32 snprintf(configfile_name, PATH_MAX, "%s/.linphonerc", getenv("HOME")); snprintf(zrtpsecrets, PATH_MAX, "%s/.linphone-zidcache", getenv("HOME")); #elif defined(_WIN32_WCE) strncpy(configfile_name,PACKAGE_DIR "\\linphonerc",PATH_MAX); mylogfile=fopen(PACKAGE_DIR "\\" "linphonec.log","w"); printf("Logs are redirected in" PACKAGE_DIR "\\linphonec.log"); #else snprintf(configfile_name, PATH_MAX, "%s/Linphone/linphonerc", getenv("APPDATA")); snprintf(zrtpsecrets, PATH_MAX, "%s/Linphone/linphone-zidcache", getenv("APPDATA")); #endif /* Handle configuration filename changes */ switch (handle_configfile_migration()) { case -1: /* error during file copies */ fprintf(stderr, "Error in configuration file migration\n"); break; case 0: /* nothing done */ case 1: /* migrated */ default: break; } #ifdef ENABLE_NLS if (NULL == bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR)) perror ("bindtextdomain failed"); #ifndef __ARM__ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif textdomain (GETTEXT_PACKAGE); #else printf ("NLS disabled.\n"); #endif linphonec_parse_cmdline(argc, argv); if (trace_level > 0) { if (logfile_name != NULL) mylogfile = fopen (logfile_name, "w+"); if (mylogfile == NULL) { mylogfile = stdout; fprintf (stderr, "INFO: no logfile, logging to stdout\n"); } linphone_core_enable_logs(mylogfile); } else { linphone_core_disable_logs(); } /* * Initialize auth stack */ auth_stack.nitems=0; /* * Initialize linphone core */ linphonec=linphone_core_new (&linphonec_vtable, configfile_name, factory_configfile_name, NULL); linphone_core_set_zrtp_secrets_file(linphonec,zrtpsecrets); linphone_core_enable_video(linphonec,vcap_enabled,display_enabled); if (display_enabled && window_id != 0) { printf ("Setting window_id: 0x%x\n", window_id); linphone_core_set_native_video_window_id(linphonec,window_id); } linphone_core_enable_video_preview(linphonec,preview_enabled); if (!(vcap_enabled || display_enabled)) printf("Warning: video is disabled in linphonec, use -V or -C or -D to enable.\n"); #ifdef HAVE_READLINE /* * Initialize readline */ linphonec_initialize_readline(); #endif #if !defined(_WIN32_WCE) /* * Initialize signal handlers */ signal(SIGTERM, linphonec_finish); signal(SIGINT, linphonec_finish); #endif /*_WIN32_WCE*/ return 1; }
static void on_video_window_destroy(GtkWidget *w, guint timeout){ g_source_remove(timeout); linphone_core_set_native_video_window_id(linphone_gtk_get_core(),LINPHONE_VIDEO_DISPLAY_NONE); }