Exemple #1
0
static AtkObject *
goo_canvas_item_accessible_new (GObject *object)
{
  AtkObject *accessible;

  g_return_val_if_fail (GOO_IS_CANVAS_ITEM (object), NULL);

  accessible = g_object_new (goo_canvas_item_accessible_get_type (), NULL);
  atk_object_initialize (accessible, object);

  return accessible;
}
Exemple #2
0
static void
on_pad_unlink (GstPad * pad, GstPad * peer, GstEditorLink * link)
{
  GRWLock *globallock;
  if ((GST_IS_EDITOR_LINK (link)) && (GST_IS_EDITOR_PAD (link->srcpad))) {
    globallock = GST_EDITOR_ITEM (link->srcpad)->globallock;
  } else if ((GST_IS_EDITOR_LINK (link)) && (GST_IS_EDITOR_PAD (link->sinkpad))) {
    globallock = GST_EDITOR_ITEM (link->sinkpad)->globallock;
  } else {
    g_print ("Warning: On pad unlink without any valid Pads called!!!!");
    return;
  }
  g_rw_lock_writer_lock (globallock);
  g_print ("Unlink pad signal (%s:%s from %s:%s) with link %p",
      GST_DEBUG_PAD_NAME (pad), GST_DEBUG_PAD_NAME (peer), link);
  GstEditorBin *srcbin = NULL, *sinkbin = NULL;

  /* this function is called when unlinking dynamic links as well */
  if (peer && pad)
    GST_CAT_DEBUG (gste_debug_cat,
        "Unlink pad signal (%s:%s from %s:%s) with link %p",
        GST_DEBUG_PAD_NAME (pad), GST_DEBUG_PAD_NAME (peer), link);
  else
    GST_CAT_DEBUG (gste_debug_cat, "Unlinking dynamic link");
  if (!GST_IS_EDITOR_PAD (link->srcpad))
    g_print ("Warning: Unlink pad signals critical: Srcpad not valid\n");
  if (link->srcpad)
    g_signal_handlers_disconnect_by_func (
        link->srcpad, on_editor_pad_position_changed, link);
  if (!GST_IS_EDITOR_PAD (link->sinkpad))
    g_print ("Warning: Unlink pad signals critical: Sinkpad not valid\n");
  if (link->sinkpad)
    g_signal_handlers_disconnect_by_func (
        link->sinkpad, on_editor_pad_position_changed, link);
  if (GST_IS_PAD (pad))
    g_signal_handlers_disconnect_by_func (pad, on_pad_unlink, link);
  else
    g_print ("Warning: On_pad_unlink: Pad not valid\n");
  if (GST_IS_PAD (peer))
    g_signal_handlers_disconnect_by_func (peer, on_pad_unlink, link);
  else
    g_print ("Warning: On_pad_unlink: Peer not valid\n");
  g_print ("Unlinked  pad signals, get srcbin\n");
  if (link->srcpad)
    srcbin = GST_EDITOR_BIN (goo_canvas_item_get_parent (
        goo_canvas_item_get_parent (GOO_CANVAS_ITEM (link->srcpad))));
  g_print ("Unlinked  pad signals, get sinkbin\n");
  if (link->sinkpad)
    sinkbin = GST_EDITOR_BIN (goo_canvas_item_get_parent (
        goo_canvas_item_get_parent (GOO_CANVAS_ITEM (link->sinkpad))));
  g_print (
      "Removing links from bin; srcbin: %p, sinkbin %p\n", srcbin, sinkbin);
  if (sinkbin)
    sinkbin->links = g_list_remove (sinkbin->links, link);
  else
    g_print ("Warning: On_pad_unlink: Sinkbin not valid\n");
  if ((sinkbin != srcbin) && (srcbin))
    srcbin->links = g_list_remove (srcbin->links, link);
  else
    g_print ("Warning: On_pad_unlink: Srcbin not validor same as Sinkbin\n");
  if (link->ghost) {
    if (link->srcpad)
      GST_EDITOR_PAD (link->srcpad)->ghostlink = NULL;
    if (link->sinkpad)
      GST_EDITOR_PAD (link->sinkpad)->ghostlink = NULL;
  } else {
    if (link->srcpad)
      GST_EDITOR_PAD (link->srcpad)->link = NULL;
    if (link->sinkpad)
      GST_EDITOR_PAD (link->sinkpad)->link = NULL;
  }
  g_rw_lock_writer_unlock (globallock);
  link->srcpad = NULL;
  link->sinkpad = NULL;
  /* i have bad luck with actually killing the GCI's */
  // goo_canvas_item_simple_hide (GOO_CANVAS_ITEM_SIMPLE (link));

  if (GOO_IS_CANVAS_ITEM (link))
    goo_canvas_item_remove (GOO_CANVAS_ITEM (link));
  g_print ("Finished on_pad_unlink\n");
}