Advertisement
dsreyes1014

'jack_ports.c' segfault

May 9th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.69 KB | None | 0 0
  1. static const gchar *
  2. get_matched_gtk_jack_port (const gchar   *string,
  3.                            const gchar   *port_clicked,
  4.                            jack_client_t *client)
  5. {
  6.     gchar *modded_string;
  7.     gchar *dup;
  8.     const gchar *string_return;
  9.     gint i;
  10.  
  11.     string_return = NULL;
  12.     modded_string = NULL;
  13.     dup = NULL;
  14.     dup = g_strdup (string);
  15.     i = 0;
  16.  
  17.     while (dup[i])
  18.     {
  19.         if (dup[i] == ':')
  20.         {
  21.             modded_string = g_strndup (dup, i);
  22.  
  23.             if (g_strcmp0 (modded_string, port_clicked) == 0)
  24.             {
  25.                 jack_port_t *jack_port;
  26.  
  27.                 /* This is where it breaks it seems. */
  28.                 jack_port = jack_port_by_name (client, dup);// <----------------
  29.  
  30.                 g_print ("Testing: %s\n", dup);
  31.  
  32.                 string_return = jack_port_short_name (jack_port);
  33.  
  34.                 jack_free (jack_port);
  35.  
  36.                 break;
  37.             }
  38.         }
  39.  
  40.         i++;
  41.     }
  42.  
  43.     g_free (modded_string);
  44.     g_free (dup);
  45.  
  46.     if (string_return == NULL)
  47.     {
  48.         return NULL;
  49.     }
  50.     else
  51.     {
  52.         return string_return;
  53.     }
  54. }
  55.  
  56. static gint
  57. create_audio_jack_ports_view (GtkListStore  *list_store,
  58.                               GtkWidget     *view,
  59.                               const gchar   *from_port_clicked,
  60.                               const gchar   *to_port_clicked,
  61.                               jack_client_t *client)
  62. {
  63.     GtkCellRenderer *renderer;
  64.     GtkTreeViewColumn *column;
  65.     GtkCellRenderer *toggle;
  66.     GtkTreeViewColumn *toggle_column;
  67.     jack_port_t *jack_port;
  68.     gint i;
  69.     gint j;
  70.     const gchar **from_ports_array;
  71.     const gchar **to_ports_array;
  72.     GtkTreeIter iter;
  73.  
  74.     i = 0;
  75.     renderer = gtk_cell_renderer_text_new ();
  76.     column = gtk_tree_view_column_new_with_attributes (NULL,
  77.                                                        renderer,
  78.                                                        "text",
  79.                                                        NULL);
  80.  
  81.     from_ports_array = jack_get_ports (client,
  82.                                        NULL,
  83.                                        JACK_DEFAULT_AUDIO_TYPE,
  84.                                        JackPortIsOutput);
  85.  
  86.     to_ports_array = jack_get_ports (client,
  87.                                      NULL,
  88.                                      JACK_DEFAULT_AUDIO_TYPE,
  89.                                      JackPortIsInput);
  90.  
  91.     while (to_ports_array[i])
  92.     {
  93.         i++;
  94.     }
  95.  
  96.     GType types[i];
  97.  
  98.     for (j = 0; j <= i; j++)
  99.     {
  100.         if (j == 0)
  101.         {
  102.            types[j] = G_TYPE_STRING;
  103.         }
  104.         else
  105.         {
  106.             types[j] = G_TYPE_BOOLEAN;
  107.         }
  108.     }
  109.  
  110.     list_store = gtk_list_store_newv (i, types);
  111.  
  112.     i = 0;
  113.     while (from_ports_array[i])
  114.     {
  115.         const gchar *jack_port_string;
  116.  
  117.         jack_port_string = get_matched_gtk_jack_port (from_ports_array[i],
  118.                                                       from_port_clicked,
  119.                                                       client);
  120.  
  121.         if (jack_port_string != NULL)
  122.         {
  123.             gtk_list_store_append (list_store, &iter);
  124.             gtk_list_store_set (list_store,
  125.                                 &iter,
  126.                                 0,
  127.                                 jack_port_string,
  128.                                 -1);
  129.         }
  130.  
  131.         i++;
  132.     }
  133.  
  134.     jack_free (from_ports_array);
  135.     gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
  136.  
  137.     i = 0;
  138.     while (to_ports_array[i])
  139.     {
  140.         const gchar *jack_port_string;
  141.  
  142.         jack_port_string = get_matched_gtk_jack_port (to_ports_array[i],
  143.                                                       to_port_clicked,
  144.                                                       client);
  145.  
  146.         /*if (jack_port_string != NULL)
  147.         {
  148.             g_print ("%s\n", to_jack_port_string);
  149.  
  150.             toggle = gtk_cell_renderer_toggle_new ();
  151.  
  152.             gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (toggle),
  153.                                                 TRUE);
  154.  
  155.             column = gtk_tree_view_column_new_with_attributes (to_jack_port_string,
  156.                                                                toggle,
  157.                                                                NULL);
  158.  
  159.             gtk_tree_view_append_column (GTK_TREE_VIEW (view), toggle_column);
  160.         }*/
  161.  
  162.         i++;
  163.     }
  164.  
  165.     gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (list_store));
  166.  
  167.     g_object_unref (list_store);
  168.  
  169.     jack_free (to_ports_array);
  170.  
  171.     g_print ("From audio action success\n");
  172.  
  173.     return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement