Hi,
in xmms2-devel.git, xmmsc_result_disconnect() is broken.

In the old days (ie, before we had xmmsv), it used to work like this:
1.) User runs:
      my_result = xmmsc_signal_foo();
2.) Eventually, the callback is hit and the user runs:
      my_result = xmmsc_result_restart();
    Now, my_result refers to the *new* result, which is different from
    the original result ;)
3.) On client shutdown, the user can call:
      xmmsc_result_disconnect(my_result);
    which will nicely clean up the result.

In the new world order, there's no equivalent to
   my_result = xmmsc_result_restart();
anymore. The user only ever knows the *original* result that was retrieved
by calling xmmsc_signal_foo(). Since the *new* result instances aren't
known to the user, he cannot disconnect them at all.
Calling xmmsc_result_disconnect(original_result) won't do anything about
the new results, because the original result doesn't reference those
either.

-> FAIL.

How do we fix this? I had the idea of sticking another xmmsc_result_t *
in the xmmsc_result_St struct that would always point to the latest
restarted signal. That way, xmmsc_result_disconnect() could look like
this:

  void xmmsc_result_disconnect (result) {
    xmmsc_result_unref (result->latest_restarted_signal);
  }

I haven't tried that approach yet, though.
It would be cool if we could fix this before DrM gets released, but it's
not critical IMO.

Regards,
Tilman

-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

Attachment: pgps3P9QaFn2j.pgp
Description: PGP signature

--
_______________________________________________
Xmms2-devel mailing list
Xmms2-devel@lists.xmms.se
http://lists.xmms.se/cgi-bin/mailman/listinfo/xmms2-devel

Reply via email to