Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DSP_LOAD.C
- /* Declared in `server_switch.c`. */
- extern GPid pid;
- gboolean
- dsp_load (gpointer data)
- {
- float dsp;
- jack_client_t *client;
- jack_status_t *status;
- gchar print_dsp[6];
- //gboolean check;
- //check = gtk_switch_get_active (sw);
- client = jack_client_open ("default", JackNullOption, status);
- if (pid == 0)
- {
- return FALSE;
- }
- else
- {
- dsp = jack_cpu_load (client);
- sprintf (print_dsp, "%.2f", dsp);
- gtk_label_set_text (GTK_LABEL (label_dsp), print_dsp);
- return TRUE;
- }
- }
- SERVER_SWITCH.C
- gchar driver_arg1[20];
- gchar driver_arg2[20];
- extern GtkWidget *box;
- GPid pid;
- /* `switch_pos` will start JACK when switched on and terminate it when switched off. */
- void
- switch_pos_new_cb (GtkSwitch *sw, gpointer data)
- {
- gboolean check;
- gchar *jack_args[10];
- /* Declared with static or else `pid` will reset to 0 in the else command. */
- //static GPid pid;
- check = gtk_switch_get_active (sw);
- jack_args[0] = "jackd";
- jack_args[1] = rt_arg ();
- jack_args[2] = "-P75";
- jack_args[3] = driver_arg1;
- jack_args[4] = driver_arg2;
- jack_args[5] = NULL;
- if (check == TRUE)
- {
- gtk_widget_set_tooltip_text (GTK_WIDGET (sw) , "Shutdown Server");
- g_spawn_async (NULL, jack_args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, NULL);
- g_timeout_add (2000, (GSourceFunc) dsp_load, (gpointer) sw); //<-- g_timeout_add () function call
- }
- else
- {
- gtk_widget_set_tooltip_text (GTK_WIDGET (sw) , "Start Server");
- kill (pid, SIGTERM);
- }
- }
- void
- server_switch (GtkWidget *box_main)
- {
- GtkWidget *jack_switch;
- GtkWidget *vbox;
- GtkWidget *label;
- gchar result[10];
- gboolean check;
- PangoAttrList *list;
- PangoAttribute *underline;
- FILE *cmd;
- cmd = popen ("pgrep jackd", "r");
- jack_switch = gtk_switch_new ();
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
- label = gtk_label_new ("JACK");
- check = gtk_switch_get_active (GTK_SWITCH (jack_switch));
- list = pango_attr_list_new ();
- underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
- pango_attr_list_insert (list, underline);
- //gtk_label_set_attributes (GTK_LABEL (label), list);
- while (fgets (result, sizeof (result), cmd) != NULL)
- {
- g_print ("%s\n", result);
- pid = atoi (result);
- g_print ("%d\n", pid);
- }
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 6);
- gtk_box_pack_start (GTK_BOX (vbox), jack_switch, FALSE, TRUE, 0);
- drivers (vbox);
- gtk_box_pack_start (GTK_BOX (box_main), vbox, FALSE, TRUE, 2);
- rt_box (box_main);
- /* Signal that works here for the `GtkSwitch` is `notify::active` which is a
- different convention used for other widget's signals that I've used. */
- if (pid != 0)
- {
- gtk_switch_set_active (GTK_SWITCH (jack_switch), TRUE);
- g_signal_connect (jack_switch, "notify::active", G_CALLBACK (switch_pos_new_cb), NULL);
- }
- else
- {
- g_signal_connect (jack_switch, "notify::active", G_CALLBACK (switch_pos_new_cb), NULL);
- }
- /* Initiate tooltip for `jack_switch` here or else it won't show when app first starts. */
- if (check == TRUE)
- {
- gtk_widget_set_tooltip_text (GTK_WIDGET (jack_switch) , "Shutdown Server");
- }
- else
- {
- gtk_widget_set_tooltip_text (GTK_WIDGET (jack_switch) , "Start Server");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement