diff --git a/README.md b/README.md index 4230147..0ccb3be 100644 --- a/README.md +++ b/README.md @@ -15,5 +15,9 @@ Features: Building: 1. sudo apt-get install cmake 2. sudo apt-get install libssl-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav libglib2.0-dev libgtk2.0-dev build-essential libgtk-3-dev -3. sudo apt-get install gstreamer1.0-vaapi (For Intel graphics) +3. sudo apt-get install gstreamer1.0-vaapi (For Intel graphics) (If you get Problems like a green screen. Remove this package! It worked for me.) 4. sh install.sh + +GTK+ Features: +1. Double click switches between fullscreen mode and normal window. +2. Escape key ends fullscreen mode. \ No newline at end of file diff --git a/airplayServer.cpp b/airplayServer.cpp index dad66cd..e88297e 100755 --- a/airplayServer.cpp +++ b/airplayServer.cpp @@ -35,6 +35,7 @@ #include #include +#include #ifdef GDK_WINDOWING_X11 #include // for GDK_WINDOW_XID @@ -171,7 +172,7 @@ void configure_callback(GtkWindow *window, GdkEvent *event, gpointer data) { } -static bool click_callback(GtkWindow *window, GdkEventButton *event, gpointer data) { +static gboolean click_callback(GtkWindow *window, GdkEventButton *event, gpointer data) { if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { @@ -185,9 +186,16 @@ static bool click_callback(GtkWindow *window, GdkEventButton *event, gpointer da GTK_data->is_fullscreen = true; } } + return true; +} +static gboolean on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { + if(event->keyval == GDK_KEY_Escape && GTK_data->is_fullscreen) { + gtk_window_unfullscreen((GtkWindow*)GTK_data->app_window); + GTK_data->is_fullscreen = false; + } } @@ -262,6 +270,7 @@ int main(int argc, char *argv[]) { gtk_widget_realize (GTK_data->app_window); g_signal_connect (G_OBJECT (GTK_data->video_window), "draw",G_CALLBACK (draw_callback), NULL); g_signal_connect (G_OBJECT (GTK_data->app_window), "button-press-event" ,G_CALLBACK (click_callback), NULL); + g_signal_connect (G_OBJECT (GTK_data->app_window), "key_press_event", G_CALLBACK (on_key_press), NULL); g_signal_connect(G_OBJECT(GTK_data->app_window), "configure-event", G_CALLBACK(configure_callback), NULL); GTK_data->video_window_xwindow = gtk_widget_get_window (GTK_data->video_window);