let register_factory f =
  if List.exists (fun o -> o#name = f#name) !factories then
    Cam_dbg.print (Printf.sprintf "A view factory called \"%s\" is already registered." f#name)
  else
    factories := f :: !factories