Add gdk-pixbuf as a libpurple dependency and move helpers from pidgin to purple

Review Request #1224 — Created Jan. 14, 2022 and submitted

Information

pidgin/pidgin
default

Reviewers

Adding gdk-pixbuf as a dependency to libpurple is kind of questionable, but it's dependencies are really just libpng, libjpeg, and libtiff. In other words, nothing UI specific. Which means we can remove a bunch of API with this change which is awesome.

This is the first step in replacing PurpleImage with GdkPixbuf. Which will also eventually include PurpleBuddyIcon and remove the need for PurpleBuddyIconSpec as protocol plugins will just be able to scale and format images themselves.

  • Move pidgingdkpixbuf.[ch] to purplegdkpixbuf.[ch]
  • Renamed all function from purplegdkpixbuf.[ch] to be in the purple_gdk_pixbuf namespace
  • Removed all unused function from purplegdkpixbuf.[ch]

I also did some research on how much disk space adding gdkpixbuf would add.

The base is a base debian container and this is against libpurple2 which is obviously going to be different. But the question was how much additional disk space will be used by adding gdkpixbuf.

base:                       157680
bitlbee:                    216452
bitlbee+gdkpixbuf:          222388
bitlbee-purple *:           363860
bitlbee-purple+gdkpixbuf *: 369796

* --no-install-recommends

We can see that for gdkpixbuf will about about 6MB of of disk usage which I would hope would be acceptable when libpurple adds 141MB by itself.

Ran and verified that an animated buddy icon was still displayed properly in the infopane and the buddy list.

Summary ID
Add gdk-pixbuf as a libpurple dependency and move helpers from pidgin to purple
* Move pidgingdkpixbuf.[ch] to purplegdkpixbuf.[ch] * Renamed all function from purplegdkpixbuf.[ch] to be in the purple_gdk_pixbuf namespace * Removed all unused function from purplegdkpixbuf.[ch]
28010619f1a1e89d2593ecc62a17399440a8d8be
ivanhoe
  1. Ship It!
    1. built it and checked for new build warnings (there were none)

  2. 
      
grim
  1. 
      
  2. I know in the past, bitlbee users weren't happy that we were downloading profile pictures (buddy icons) as well as custom emjoi. We could add an option to PurpleUiInfo that says it can use images, and then everything could check that to avoid that scenario. If doing that along, we'd already recoup of all of the disk space (see below) that adding GdkPixbuf adds.

    Some more break down of how it'd affect bitlbee installs on debian using purple2 as the test case.

    Sizes are in 1k blocks, so 157680 is ~154mb

    base:                       157680
    bitlbee:                    216452
    bitlbee+gdkpixbuf:          222388
    bitlbee-purple *:           363860
    bitlbee-purple+gdkpixbuf *: 369796
    
    * --no-install-recommends
    
  3. 
      
grim
rekkanoryo
  1. Ship It!
  2. I haven't reviewed this in super fine detail, but I don't see anything that jumps out at me and I support the idea of making libpurple able to handle the gdkpixbuff stuff directly.

  3. 
      
grim
grim
grim
grim
Review request changed
Status:
Completed