1. 23 2月, 2013 14 次提交
  2. 22 2月, 2013 26 次提交
    • A
      ui/gtk: require at least GTK 2.18 and VTE 0.26 · 5cbb0828
      Anthony Liguori 提交于
      This gives us the bare amount of features we need.  We can add work arounds
      for older versions and lower the requirement but this should be a good
      starting point.
      Suggested-by: NDaniel Berrange <berrange@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      ---
      v1 -> v2
       - tremendous simplification suggested by danpb
      5cbb0828
    • G
      unbreak hw/usb/redirect.c build · 82fb0c89
      Gerd Hoffmann 提交于
      Commit 8550a02d added a streams
      parameter to usb_wakeup and didn't update redirect.c.  Fix it.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      82fb0c89
    • S
      ui/gtk: Fix build (missing include for setlocale) · 3f58eade
      Stefan Weil 提交于
      At least for Ubuntu Linux locale.h is needed.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Message-id: 1361514481-26164-1-git-send-email-sw@weilnetz.de
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      3f58eade
    • A
      gtk: suppress accelerators from the File menu when grab is active · 73d4dc71
      Anthony Liguori 提交于
      If you're full screen, you probably expect Ctrl-Q to go to the guest,
      not the host.  I think restricting certain menus is the right way to
      handle this generally speaking.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-10-git-send-email-aliguori@us.ibm.com
      73d4dc71
    • A
      gtk: make default UI (v5) · 15546425
      Anthony Liguori 提交于
      A user can still enable SDL with '-sdl' or '-display sdl' but start making the
      default display GTK by default.
      
      I'd also like to deprecate the SDL display and remove it in a few releases.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-9-git-send-email-aliguori@us.ibm.com
      15546425
    • A
      gtk: add translation support (v5) · 834574ea
      Anthony Liguori 提交于
      This includes a de_DE translation from Kevin Wolf and an it translation from
      Paolo Bonzini.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-8-git-send-email-aliguori@us.ibm.com
      834574ea
    • A
      gtk: add support for screen scaling and full screen (v5) · c6158483
      Anthony Liguori 提交于
      Basic menu items to enter full screen mode and zoom in/out.  Unlike SDL, we
      don't allow arbitrary scaling based on window resizing.  The current behavior
      with SDL causes a lot of problems for me.
      
      Sometimes I accidentally resize the window a tiny bit while trying to move it
      (Ubuntu's 1-pixel window decorations don't help here).  After that, scaling is
      now active and if the screen changes size again, badness ensues since the
      aspect ratio is skewed.
      
      Allowing zooming by 25% in and out should cover most use cases.  We can add a
      more flexible scaling later but for now, I think this is a more friendly
      behavior.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-7-git-send-email-aliguori@us.ibm.com
      c6158483
    • A
      gtk: add support for input grabbing (v2) · 5104a1f6
      Anthony Liguori 提交于
      There is a small deviation from SDL's behavior here.  Instead of Ctrl+Alt
      triggering grab, we now use Ctrl-Alt-g to trigger grab.
      
      GTK will not accept Ctrl+Alt as an accelerator since it just consists of
      modifiers.  Having grab as a proper accelerator is important as it allows a user
      to override the accelerator for accessibility purposes.
      
      We also are not automatically grabbing on left-click.  Besides the inability to
      tie mouse clicks to an accelerator, I think this behavior is hard to discover
      and since it only happens depending on the guest state, it can lead to confusing
      behavior.
      
      This can be changed in the future if there's a strong resistence to dropping
      left-click-to-grab, but I think we're better off dropping it.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-6-git-send-email-aliguori@us.ibm.com
      5104a1f6
    • A
      gtk: add virtual console support (v2) · d861def3
      Anthony Liguori 提交于
      This enables VteTerminal to be used to render the text consoles.  VteTerminal is
      the same widget used by gnome-terminal which means it's VT100 emulation is as
      good as they come.
      
      It's also screen reader accessible, supports copy/paste, proper scrolling and
      most of the other features you would expect from a terminal widget.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-5-git-send-email-aliguori@us.ibm.com
      d861def3
    • A
      ui: add basic GTK gui (v5) · a4ccabcf
      Anthony Liguori 提交于
      This is minimalistic and just contains the basic widget infrastructure.  The GUI
      consists of a menu and a GtkNotebook.  To start with, the notebook has its tabs
      hidden which provides a UI that looks very similar to SDL with the exception of
      the menu bar.
      
      The menu bar allows a user to toggle the visibility of the tabs.  Cairo is used
      for rendering.
      
      I used gtk-vnc as a reference.  gtk-vnc solves the same basic problems as QEMU
      since it was originally written as a remote display for QEMU.  So for the most
      part, the approach to rendering and keyboard handling should be pretty solid for
      GTK.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-4-git-send-email-aliguori@us.ibm.com
      a4ccabcf
    • A
      console: allow VCs to be overridden by UI · d82831db
      Anthony Liguori 提交于
      We want to expose VCs using a VteTerminal widget.  We need access to provide our
      own CharDriverState in order to do this.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-3-git-send-email-aliguori@us.ibm.com
      d82831db
    • A
      build: disable Wstrict-prototypes · 22bc9a46
      Anthony Liguori 提交于
      GTK won't build with strict-prototypes due to gtkitemfactory.h:
      
          /* We use () here to mean unspecified arguments. This is deprecated
           * as of C99, but we can't change it without breaking compatibility.
           * (Note that if we are included from a C++ program () will mean
           * (void) so an explicit cast will be needed.)
           */
          typedef	void	(*GtkItemFactoryCallback)  ();
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-2-git-send-email-aliguori@us.ibm.com
      22bc9a46
    • P
      qom/object.c: Allow itf cast with num_itfs = 0 · 00e2ceae
      Peter Crosthwaite 提交于
      num_interfaces only tells you how many interfaces the concrete child class has
      (as defined in the TypeInfo). This means if you have a child class which defines
      no interfaces of its own, but its parent has interfaces you cannot cast to those
      parent interfaces.
      
      Fixed changing the guard to check the class->interfaces list instead (which is
      a complete flattened list of implemented interfaces).
      Signed-off-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Message-id: a8c2db3b9b1f3c4bb81aca352b69e33260f36545.1361246206.git.peter.crosthwaite@xilinx.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      00e2ceae
    • P
      qom/object.c: Reset interface list on inheritance · 3e407de4
      Peter Crosthwaite 提交于
      The QOM framework will attempt the recreate a classes interface list from
      scratch for each class. This means that a child class should zero out the
      list of interfaces when cloned from the parent class.
      
      Currently the list is memcpy()d from the parent to the child. As the interface
      list is just a pointer to a list, this means the parent and child will share
      the same list of interfaces. When the child inits, it will append its own
      interfaces to the parents list. This is incorrect as the parent should not pick
      up its childs interfaces.
      
      This actually causes an infinite loop at class init time, as the child will
      iterate through the parent interface list adding each itf to its own list(in
      type_initialize()). As the list is (erroneously) shared, the new interface
      instances for the child are appended to the parent, and the iterator never hits
      the tail and loops forever.
      Signed-off-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1f58d2b629d82865dbb2fd5ba8445854049c4382.1361246206.git.peter.crosthwaite@xilinx.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      3e407de4
    • G
      vga: fix byteswapping. · b1424e03
      Gerd Hoffmann 提交于
      In case host and guest endianness differ the vga code first creates
      a shared surface (using qemu_create_displaysurface_from), then goes
      patch the surface format to indicate that the bytes must be swapped.
      
      The switch to pixman broke that hack as the format patching isn't
      propagated into the pixman image, so ui code using the pixman image
      directly (such as vnc) uses the wrong format.
      
      Fix that by adding a byteswap parameter to
      qemu_create_displaysurface_from, so we'll use the correct format
      when creating the surface (and the pixman image) and don't have
      to patch the format afterwards.
      
      [ v2: unbreak xen build ]
      
      Cc: qemu-stable@nongnu.org
      Cc: mark.cave-ayland@ilande.co.uk
      Cc: agraf@suse.de
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1361349432-23884-1-git-send-email-kraxel@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      b1424e03
    • P
      Remove elderly top level TODO file · ba43da36
      Peter Maydell 提交于
      The top level TODO file hasn't been touched since 2008, so it's now
      an unhelpful and out of date mix of things that have already been done,
      things that don't make sense any more and things which could in theory
      be done but are not in practice important enough (or we'd have done
      them some time in the last five years). Remove it. The bug tracking
      system is probably a better place to track TODO items if we want to
      do so.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1361377462-19816-1-git-send-email-peter.maydell@linaro.org
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      ba43da36
    • J
      help: add docs for multiqueue tap options · 2ca81baa
      Jason Wang 提交于
      Cc: Markus Armbruster <armbru@redhat.com>
      Cc: Jason Wang <jasowang@redhat.com>
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Message-id: 1361354641-51969-1-git-send-email-jasowang@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      2ca81baa
    • S
      aio: support G_IO_HUP and G_IO_ERR · b5a01a70
      Stefan Hajnoczi 提交于
      aio-posix.c could not take advantage of G_IO_HUP and G_IO_ERR because
      select(2) does not have equivalent events.  Now that g_poll(3) is used
      we can support G_IO_HUP and G_IO_ERR.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-11-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      b5a01a70
    • S
      aio: convert aio_poll() to g_poll(3) · 6b5f8762
      Stefan Hajnoczi 提交于
      AioHandler already has a GPollFD so we can directly use its
      events/revents.
      
      Add the int pollfds_idx field to AioContext so we can map g_poll(3)
      results back to AioHandlers.
      
      Reuse aio_dispatch() to invoke handlers after g_poll(3).
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-10-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      6b5f8762
    • S
      aio: extract aio_dispatch() from aio_poll() · d0c8d2c0
      Stefan Hajnoczi 提交于
      We will need to loop over AioHandlers calling ->io_read()/->io_write()
      when aio_poll() is converted from select(2) to g_poll(2).
      
      Luckily the code for this already exists, extract it into the new
      aio_dispatch() function.
      
      Two small changes:
      
       * aio_poll() checks !node->deleted to avoid calling handlers that have
         been deleted.
      
       * Fix typo 'then' -> 'them' in aio_poll() comment.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-9-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d0c8d2c0
    • S
      main-loop: drop rfds/wfds/xfds for good · 9cbaacf9
      Stefan Hajnoczi 提交于
      Now that all *_fill() and *_poll() functions use GPollFD we no longer
      need rfds/wfds/xfds or pollfds_from_select()/pollfds_to_select().
      
      >From now on everything uses GPollFD.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-8-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      9cbaacf9
    • S
      iohandler: switch to GPollFD · a3e4b4a8
      Stefan Hajnoczi 提交于
      Convert iohandler_select_fill() and iohandler_select_poll() to use
      GPollFD instead of rfds/wfds/xfds.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-7-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      a3e4b4a8
    • S
      slirp: switch to GPollFD · 8917c3bd
      Stefan Hajnoczi 提交于
      Slirp uses rfds/wfds/xfds more extensively than other QEMU components.
      
      The rarely-used out-of-band TCP data feature is used.  That means we
      need the full table of select(2) to g_poll(3) events:
      
        rfds -> G_IO_IN | G_IO_HUP | G_IO_ERR
        wfds -> G_IO_OUT | G_IO_ERR
        xfds -> G_IO_PRI
      
      I came up with this table by looking at Linux fs/select.c which maps
      select(2) to poll(2) internally.
      
      Another detail to watch out for are the global variables that reference
      rfds/wfds/xfds during slirp_select_poll().  sofcantrcvmore() and
      sofcantsendmore() use these globals to clear fd_set bits.  When
      sofcantrcvmore() is called, the wfds bit is cleared so that the write
      handler will no longer be run for this iteration of the event loop.
      
      This actually seems buggy to me since TCP connections can be half-closed
      and we'd still want to handle data in half-duplex fashion.  I think the
      real intention is to avoid running the read/write handler when the
      socket has been fully closed.  This is indicated with the SS_NOFDREF
      state bit so we now check for it before invoking the TCP write handler.
      Note that UDP/ICMP code paths don't care because they are
      connectionless.
      
      Note that slirp/ has a lot of tabs and sometimes mixed tabs with spaces.
      I followed the style of the surrounding code.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-6-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      8917c3bd
    • S
      slirp: slirp/slirp.c coding style cleanup · cf1d078e
      Stefan Hajnoczi 提交于
      The slirp glue code uses tabs in some places.  Since the next patch will
      modify the file, convert tabs to spaces and fix checkpatch.pl issues.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-5-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      cf1d078e
    • S
      main-loop: switch POSIX glib integration to GPollFD · 48ce11ff
      Stefan Hajnoczi 提交于
      Convert glib file descriptor polling from rfds/wfds/xfds to GPollFD.
      
      The Windows code still needs poll_fds[] and n_poll_fds but they can now
      become local variables.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-4-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      48ce11ff
    • S
      main-loop: switch to g_poll() on POSIX hosts · cbff4b34
      Stefan Hajnoczi 提交于
      Use g_poll(3) instead of select(2).  Well, this is kind of a cheat.
      It's true that we're now using g_poll(3) on POSIX hosts but the *_fill()
      and *_poll() functions are still using rfds/wfds/xfds.
      
      We've set the scene to start converting *_fill() and *_poll() functions
      step-by-step until no more rfds/wfds/xfds users remain.  Then we'll drop
      the temporary gpollfds_from_select() and gpollfds_to_select() functions
      and be left with native g_poll(2).
      
      On Windows things are a little crazy: convert from rfds/wfds/xfds to
      GPollFDs, back to rfds/wfds/xfds, call select(2), rfds/wfds/xfds back to
      GPollFDs, and finally back to rfds/wfds/xfds again.  This is only
      temporary and keeps the Windows build working through the following
      patches.  We'll drop this excessive conversion later and be left with a
      single GPollFDs -> select(2) -> GPollFDs sequence that allows Windows to
      use select(2) while the rest of QEMU only knows about GPollFD.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-3-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      cbff4b34