Re: gtkpod 2 ... heading towards releasing
phantomjinx <[email protected]>
| Newsgroups | gmane.comp.ipod.gtkpod |
|---|---|
| Message-ID | <[email protected]> |
> I confirm that isn't built, but that commit only removed coverweb.c
> from POTFILES.in because there weren't string marked as translatable:
>
> +plugins/coverweb/coverweb.glade
> +plugins/coverweb/coverweb_preferences.c
> +plugins/coverweb/plugin.c
>
> -plugins/coverweb/coverweb.c
> -plugins/coverweb/plugin.c
> -plugins/coverweb/coverweb_preferences.c
> -plugins/coverweb/coverweb.glade
>
> (now I added coverweb.c back because there were 2 strings to be
> translated and installed libwebkit-dev to test it)
>
>
>> I will readd the entries back as it has broken the ubuntu auto-build.
>>
>
Seemed that data/coverweb.glade got removed and never re-added, which
was the only error in the auto-build so fixed.
> sure, but please don't make update-po until the last moment before you
> will ask people to work on translations because it makes git history
> unnecessarily bigger (diff are usually big if line numbers are changed
> and there's no need for updated .po/.mo files with untranslated
> strings because there is no user visible difference) ideally there
> would be only 2 commits of .po files, one to prepare the files on
> which translators will work and one to integrate their work
>
> ***
>
Too late ... sorry! Will not in future. Although I am trying to keep
them up to date with the ones on transifex. That said no one has done
any translations for them yet ...
> cover web segfaults
> on a regular image a popup menu with 3 or 4 items is shown and
> everything is ok, but in Google images when you hover a picture and
> the bigger picture is shown, the popup menu has 7 items and chosing
> "Copy image" results in a segfault:
>
> #0 0xb39cfd07 in ?? () from /usr/lib/libwebkit-1.0.so.2
> #1 0xb351de12 in ?? () from /usr/lib/libwebkit-1.0.so.2
> #2 0xb368db65 in ?? () from /usr/lib/libwebkit-1.0.so.2
> #3 0xb39c6a38 in ?? () from /usr/lib/libwebkit-1.0.so.2
> #4 0x00d2c93c in g_cclosure_marshal_VOID__VOID () from
> /usr/lib/libgobject-2.0.so.0
> #5 0x00d1d412 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
> #6 0x00d33595 in ?? () from /usr/lib/libgobject-2.0.so.0
> #7 0x00d349bc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> #8 0x00d34e62 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
> #9 0x008d3945 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
> #10 0x007b13a0 in gtk_menu_shell_activate_item () from
> /usr/lib/libgtk-x11-2.0.so.0
> #11 0x007b2d3f in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #12 0x007a7a54 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #13 0x007a1284 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #14 0x00d1ba87 in ?? () from /usr/lib/libgobject-2.0.so.0
> #15 0x00d1d412 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
> #16 0x00d331e6 in ?? () from /usr/lib/libgobject-2.0.so.0
> #17 0x00d3483b in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> #18 0x00d34e62 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
> #19 0x008cfb96 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #20 0x0079985d in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
> #21 0x0079ac17 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
> #22 0x0026f36a in ?? () from /usr/lib/libgdk-x11-2.0.so.0
> #23 0x00e9d855 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
> #24 0x00ea1668 in ?? () from /lib/libglib-2.0.so.0
> #25 0x00ea1ba7 in g_main_loop_run () from /lib/libglib-2.0.so.0
> #26 0x0079b1d9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
> #27 0x08053813 in main (argc=1, argv=0xbfbae094) at main.c:63
>
> ***
>
> gtkpod freezes:
> right click on a track and choose edit track details, do not apply but
> close the track details dock, then right click on a track, the popup
> menu never shows and gtkpod freezes
> attaching gdb, this is the interesting part of the backtrace:
> #0 0x00575416 in __kernel_vsyscall ()
> #1 0x006b6169 in __lll_lock_wait () at
> ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/lowlevellock.S:142
> #2 0x006b15cb in _L_lock_748 () from /lib/libpthread.so.0
> #3 0x006b13f1 in __pthread_mutex_lock (mutex=0x8f32220) at
> pthread_mutex_lock.c:61
> #4 0x002e96d6 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
> #5 0x002e9660 in gdk_threads_enter () from /usr/lib/libgdk-x11-2.0.so.0
> #6 0x01152685 in details_set_tracks (tracks=0x947fed0) at details.c:1292
> #7 0x00590ef8 in g_cclosure_marshal_VOID__POINTER () from
> /usr/lib/libgobject-2.0.so.0
> #8 0x00582412 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
> #9 0x00598595 in ?? () from /usr/lib/libgobject-2.0.so.0
> #10 0x005999bc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> #11 0x00599e62 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
> #12 0x00894f59 in gtkpod_set_selected_tracks (tracks=0x947fed0) at
> gtkpod_app_iface.c:379
> #13 0x065e64a1 in tm_context_menu_init () at track_display_context_menu.c:157
> #14 0x065e9559 in tm_button_press_event (w=0x910cc80, e=0x9376808,
> data=0x0) at display_tracks.c:1966
>
> it also freezes if you have Playlist Tracks and Track Details open at
> the same time, start editing the details and right click on a track in
> Playlist Tracks
>
> ***
>
> Right clicking on an item in Track Display selects the line and open
> the popup menu, while on Filter Tabs only selects it, you need to
> right click a second time to open the popup menu.
>
> Copying tracks from this popup menu is the same as exporting from the
> Tools menu? If so the menu labels should be more similar, while we
> have
> (popup menu) Copy / Copy Tracks to Filesystem
> (Tools menu) Export Tracks / Export Tracks To Filesystem
>
> (Tools menu) Export Tracks / Export Tracks To Playlist File
> (popup menu) Create Playlist / Create Playlist File
>
> ***
>
> While editing track details does it make sense to modify Filesize?
>
No. Should be read-only.
> ***
>
> There is a bunch of strings that might need translations, since you
> know the code you may be able to tell if it's true faster than me, and
> it seems strange that two files are identical except one included
> file, see:
> diff -u ./plugins/cover_display/fetchcover.c
> ./plugins/details_editor/fetchcover.c
>
Yeah. Its because the fetchcover service is used in the two separate
plugins, ie. cover_display and details editor. The fetchcover service
operates by dragging n dropping an image onto the relevant canvas, which
them downloads and copies the image. In both plugins, it is possible to
do this thus both plugins need the service. However, I didnt want it in
the core library since it is an optional service. Unfortunately, it is
impossible for plugins to depend on each other so I am left with
replicating it since both plugins are completely independant on one another.
> I hand picked them running grep "g_strdup" . -rn | grep '"' | grep -v
> '_(' | grep -v ngettext | less
>
> ./plugins/details_editor/details.c:1202: = g_strdup_printf("%d / %d",
> g_list_index(details_view->tracks, details_view->track) + 1,
> g_list_length(details_view->tracks));
>
> ./plugins/filetype_wav/wavfile.c:164: track->filetype = g_strdup("WAV
> audio file");
>
> ./plugins/filetype_video/videofile.c:47: track->filetype =
> g_strdup("Generic video file");
>
> ./plugins/filetype_flac/flacfile.c:157: track->description =
> g_strdup("FLAC audio file");
>
> ./plugins/filetype_ogg/oggfile.c:80: track->description =
> g_strdup("OGG audio file");
>
> ./plugins/filetype_mp3/mp3file.c:1195: gchar *tmp =
> g_strdup_printf("(%d)", index);
> ./plugins/filetype_mp3/mp3file.c:1626: string1 =
> g_strdup_printf("%d/%d", track->track_nr, track->tracks);
> ./plugins/filetype_mp3/mp3file.c:1633: string1 =
> g_strdup_printf("%d/%d", track->cd_nr, track->cds);
> ./plugins/filetype_mp3/mp3file.c:2784: track->filetype =
> g_strdup("MPEG audio file");
>
> ./plugins/filetype_mp4/mp4file.c:693: track->filetype = g_strdup("AAC
> audio file");
> ./plugins/filetype_mp4/mp4file.c:695: track->filetype =
> g_strdup("Protected AAC audio file");
> ./plugins/filetype_mp4/mp4file.c:697: track->filetype = g_strdup("AAC
> audio book file");
> ./plugins/filetype_mp4/mp4file.c:699: track->filetype = g_strdup("MP4
> video file");
> ./plugins/filetype_m4a/mp4file.c:693: track->filetype = g_strdup("AAC
> audio file");
> ./plugins/filetype_m4a/mp4file.c:695: track->filetype =
> g_strdup("Protected AAC audio file");
> ./plugins/filetype_m4a/mp4file.c:697: track->filetype = g_strdup("AAC
> audio book file");
> ./plugins/filetype_m4a/mp4file.c:699: track->filetype = g_strdup("MP4
> video file");
>
> ./plugins/cover_display/fetchcover.c:150: fetch_cover->err_msg =
> g_strdup("Only jpg images are currently supported at this time\n");
> ./plugins/cover_display/fetchcover.c:173: fetch_cover->err_msg =
> g_strdup("fetchcover curl data memory is null so failed to download
> anything!\n");
> ./plugins/cover_display/fetchcover.c:180: fetch_cover->err_msg =
> g_strdup("fetchcover memory contains<html> tag so not a valid jpg
> image\n");
> ./plugins/cover_display/fetchcover.c:200: fetch_cover->err_msg =
> g_strdup ("Failed to create a file with the filename\n");
> ./plugins/cover_display/fetchcover.c:214: fetch_cover->err_msg =
> g_strdup("fetchcover failed to write the data to the new file\n");
> ./plugins/cover_display/fetchcover.c:225: fetch_cover->err_msg =
> g_strdup("fetchcover downloaded file is not a valid image file\n");
> ./plugins/cover_display/fetchcover.c:261: fetch_cover->err_msg =
> g_strdup("fetchcover object's tracks list either NULL or no tracks
> were selected\n");
> ./plugins/cover_display/fetchcover.c:302: fetch_cover->err_msg =
> g_strdup("operation cancelled\n");
>
> ./plugins/details_editor/fetchcover.c:149: fetch_cover->err_msg =
> g_strdup("Only jpg images are currently supported at this time\n");
> ./plugins/details_editor/fetchcover.c:172: fetch_cover->err_msg =
> g_strdup("fetchcover curl data memory is null so failed to download
> anything!\n");
> ./plugins/details_editor/fetchcover.c:179: fetch_cover->err_msg =
> g_strdup("fetchcover memory contains<html> tag so not a valid jpg
> image\n");
> ./plugins/details_editor/fetchcover.c:199: fetch_cover->err_msg =
> g_strdup ("Failed to create a file with the filename\n");
> ./plugins/details_editor/fetchcover.c:213: fetch_cover->err_msg =
> g_strdup("fetchcover failed to write the data to the new file\n");
> ./plugins/details_editor/fetchcover.c:224: fetch_cover->err_msg =
> g_strdup("fetchcover downloaded file is not a valid image file\n");
> ./plugins/details_editor/fetchcover.c:260: fetch_cover->err_msg =
> g_strdup("fetchcover object's tracks list either NULL or no tracks
> were selected\n");
> ./plugins/details_editor/fetchcover.c:301: fetch_cover->err_msg =
> g_strdup("operation cancelled\n");
>
> ./plugins/sorttab_display/display_sorttabs.c:2990: =
> g_strdup_printf("%02d/%02d/%04d %d:%02d", tm->tm_mday, tm->tm_mon + 1,
> 1900 + tm->tm_year, tm->tm_hour, tm->tm_min);
> ./plugins/sorttab_display/display_sorttabs.c:3024: str =
> g_strdup_printf("> %s", str1);
> ./plugins/sorttab_display/display_sorttabs.c:3026: str =
> g_strdup_printf("< %s", str2);
> ./plugins/sorttab_display/display_sorttabs.c:3028: str =
> g_strdup_printf("%s< < %s", str1, str2);
>
> ./plugins/repository_editor/repository_init.c:72: =
> g_strdup_printf("%2.0f GB %s (x%s)", info->capacity,
> itdb_info_get_ipod_model_name_string(info->ipod_model),
> info->model_number);
> ./plugins/repository_editor/repository_init.c:76: =
> g_strdup_printf("%3.0f MB %s (x%s)", info->capacity * 1024,
> itdb_info_get_ipod_model_name_string(info->ipod_model),
> info->model_number);
> ./plugins/repository_editor/repository_init.c:80: =
> g_strdup_printf("%s (x%s)",
> itdb_info_get_ipod_model_name_string(info->ipod_model),
> info->model_number);
>
> ./libgtkpod/misc_playlist.c:191: category = g_strdup_printf("[%s %s]",
> qualifier, track_cat);
> ./libgtkpod/misc_playlist.c:254: pl_name = g_strdup_printf("[%s]", pl_name1);
> ./libgtkpod/misc_playlist.c:408: gchar *pl_name = g_strdup_printf("[%s]", str);
>
> ./libgtkpod/misc_conversion.c:379: return g_strdup ("--");
>
> ./libgtkpod/tools.c:398: gchar *label_buf = g_strdup_printf ("%d/%d", count, n);
>
> ./libgtkpod/misc_track.c:1105: return g_strdup_printf("%d:%06.3f",
> length / 60000, ((float) (length % 60000)) / 1000);
> ./libgtkpod/misc_track.c:1195: text = g_strdup_printf("%d/%d",
> track->track_nr, track->tracks);
> ./libgtkpod/misc_track.c:1201: text = g_strdup_printf("%d/%d",
> track->cd_nr, track->cds);
> ./libgtkpod/misc_track.c:1207: text = g_strdup("--");
> ./libgtkpod/misc_track.c:1249: text = g_strdup_printf("%dk", track->bitrate);
> ./libgtkpod/misc_track.c:1914: return g_strdup_printf("iPod ID: %d", track->id);
>
>
Will look into these further over the next couple of days.
Cheers
PGR
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl