I think I worked out at least part of the problem, so might not be a gnome-control-center bug after all. gnome-control-center uses the mimetype "video/x-ogm+ogg" to determine the default Video app in Default Applications. SMplayer does not have this mimetype in its smplayer.desktop file, but instead has "video/x-ogm". None of the other video players that I see have that specific mimetype in their .desktop files, so when gnome-control-center sets the default for the mimetypes present in the .desktop file, a line: video/x-ogm=smplayer.desktop will still exist in ~/.local/share/applications/mimeapps.list.
The curious part is why should it care? It asks for "video/x-ogm+ogg", which is set correctly. The problem is that when glib loads the mimetypes from mimeapps.list, it calls a function xdg_mime_unalias_mime_type() on "video/x-ogm", and as it happens, /usr/share/mime/aliases has a line "video/x-ogm video/x-ogm+ogg". So if "video/x-ogm=smplayer.desktop" happens to appear later in mimeapps.list, it will end up overwriting the true default value in the hashtable.
I find that if I change the mimetype in smplayer.desktop to "video/x-ogm+ogg" and delete the "video/x-ogm=smplayer.desktop" line from mimeapps.list, then gnome-control-center will again correctly let me switch between totem, vlc and smplayer as defaults. So that might be a fix, in smplayer instead. Might be a bit fragile though, since if another app comes along doing the same thing, it will expose the same bug.
I think I worked out at least part of the problem, so might not be a gnome-control- center bug after all. gnome-control- center uses the mimetype "video/x-ogm+ogg" to determine the default Video app in Default Applications. SMplayer does not have this mimetype in its smplayer.desktop file, but instead has "video/x-ogm". None of the other video players that I see have that specific mimetype in their .desktop files, so when gnome-control- center sets the default for the mimetypes present in the .desktop file, a line: video/x- ogm=smplayer. desktop will still exist in ~/.local/ share/applicati ons/mimeapps. list.
The curious part is why should it care? It asks for "video/x-ogm+ogg", which is set correctly. The problem is that when glib loads the mimetypes from mimeapps.list, it calls a function xdg_mime_ unalias_ mime_type( ) on "video/x-ogm", and as it happens, /usr/share/ mime/aliases has a line "video/x-ogm video/x-ogm+ogg". So if "video/ x-ogm=smplayer. desktop" happens to appear later in mimeapps.list, it will end up overwriting the true default value in the hashtable.
I find that if I change the mimetype in smplayer.desktop to "video/x-ogm+ogg" and delete the "video/ x-ogm=smplayer. desktop" line from mimeapps.list, then gnome-control- center will again correctly let me switch between totem, vlc and smplayer as defaults. So that might be a fix, in smplayer instead. Might be a bit fragile though, since if another app comes along doing the same thing, it will expose the same bug.