+ {
+ const bool b_enabled = var_CountChoices( p_input, "teletext-es" ) > 0;
+ const int i_teletext_es = var_GetInteger( p_input, "teletext-es" );
+
+ /* Teletext is possible. Show the buttons */
+ emit teletextPossible( b_enabled );
+
+ /* If Teletext is selected */
+ if( b_enabled && i_teletext_es >= 0 )
+ {
+ /* Then, find the current page */
+ int i_page = 100;
+ bool b_transparent = false;
+
+ vlc_object_t *p_vbi = (vlc_object_t *)
+ vlc_object_find_name( p_input, "zvbi", FIND_CHILD );
+
+ if( p_vbi )
+ {
+ /* We deleted it (if not here, it does not harm), because
+ * var_AddCallback will silently add a duplicated one */
+ var_DelCallback( p_vbi, "vbi-page", VbiEvent, this );
+ /* This callback is not remove explicitly, but interfaces
+ * are guaranted to outlive input */
+ var_AddCallback( p_vbi, "vbi-page", VbiEvent, this );
+
+ i_page = var_GetInteger( p_vbi, "vbi-page" );
+ b_transparent = !var_GetBool( p_vbi, "vbi-opaque" );
+ vlc_object_release( p_vbi );
+ }
+ emit newTelexPageSet( i_page );
+ emit teletextTransparencyActivated( b_transparent );
+
+ }
+ emit teletextActivated( b_enabled && i_teletext_es >= 0 );
+ }