Skip to content
  • Colin Walters's avatar
    Add glib__private__() API to share between glib,gio; port GWakeup to it · 9bf59d4a
    Colin Walters authored and Allison Karlitskaya's avatar Allison Karlitskaya committed
    Historically we've added random symbols to the public API with warnings
    that they're private; examples are:
    
    glib_gettext(), glib_pgettext()
    g_thread_functions_for_glib_use, g_thread_use_default_impl, etc.
    
    And we almost added "GWakeup" to public API just to share between glib and
    gio.
    
    This new glib__private__() API exports a hidden vtable, and adds a macro
    GLIB_PRIVATE_CALL() that makes it generally convenient to use.
    
    This adds an extremely tiny cost for the double indirection; but it has
    the benefit that we don't need to either:
    
    1) compile the code into both glib and gio (like GWakeup), with the
       inefficiency that implies.
    2) Export a "do not use this" symbol; the serious problem with this is
       that someone CAN use it pretty easily.  Particularly if we document
       it.  It's far, far harder to peek into a structure without a public
       header file.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=657992
    9bf59d4a