diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/display-private.h | 2 | ||||
| -rw-r--r-- | src/core/display.c | 7 | ||||
| -rw-r--r-- | src/core/effects.c | 12 | ||||
| -rw-r--r-- | src/core/screen.c | 16 | ||||
| -rw-r--r-- | src/core/window-private.h | 2 | ||||
| -rw-r--r-- | src/core/window.c | 45 | 
6 files changed, 34 insertions, 50 deletions
| diff --git a/src/core/display-private.h b/src/core/display-private.h index 586ed26e..3352fb72 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -184,7 +184,7 @@ struct _MetaDisplay {  	int         grab_initial_x, grab_initial_y;  /* These are only relevant for */  	gboolean    grab_threshold_movement_reached; /* raise_on_click == FALSE.    */  	MetaResizePopup* grab_resize_popup; -	GTimeVal    grab_last_moveresize_time; +	gint64      grab_last_moveresize_time;  	guint32     grab_motion_notify_time;  	int         grab_wireframe_last_display_width;  	int         grab_wireframe_last_display_height; diff --git a/src/core/display.c b/src/core/display.c index dc741b32..0214d5e6 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -3658,8 +3658,7 @@ meta_display_begin_grab_op (MetaDisplay *display,    display->grab_anchor_root_y = root_y;    display->grab_latest_motion_x = root_x;    display->grab_latest_motion_y = root_y; -  display->grab_last_moveresize_time.tv_sec = 0; -  display->grab_last_moveresize_time.tv_usec = 0; +  display->grab_last_moveresize_time = 0;    display->grab_motion_notify_time = 0;    display->grab_old_window_stacking = NULL;  #ifdef HAVE_XSYNC @@ -3712,9 +3711,7 @@ meta_display_begin_grab_op (MetaDisplay *display,  			   display->grab_window->sync_request_counter, init);  	  display->grab_window->sync_request_serial = 0; -	  display->grab_window->sync_request_time.tv_sec = 0; -	  display->grab_window->sync_request_time.tv_usec = 0; - +	  display->grab_window->sync_request_time = 0;            values.trigger.counter = display->grab_window->sync_request_counter;            values.trigger.value_type = XSyncAbsolute;            values.trigger.test_type = XSyncPositiveTransition; diff --git a/src/core/effects.c b/src/core/effects.c index 2866246f..f23c60f2 100644 --- a/src/core/effects.c +++ b/src/core/effects.c @@ -79,7 +79,7 @@ typedef struct    MetaScreen *screen;    double millisecs_duration; -  GTimeVal start_time; +  gint64 start_time;  #ifdef HAVE_SHAPE    /** For wireframe window */ @@ -318,7 +318,7 @@ static gboolean  effects_draw_box_animation_timeout (BoxAnimationContext *context)  {    double elapsed; -  GTimeVal current_time; +  gint64 current_time;    MetaRectangle draw_rect;    double fraction; @@ -337,12 +337,10 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context)  #endif /* !HAVE_SHAPE */ -  g_get_current_time (¤t_time); +  current_time = g_get_real_time ();    /* We use milliseconds for all times */ -  elapsed = -    ((((double)current_time.tv_sec - context->start_time.tv_sec) * G_USEC_PER_SEC + -      (current_time.tv_usec - context->start_time.tv_usec))) / 1000.0; +  elapsed = (current_time - context->start_time) / 1000.0;    if (elapsed < 0)      { @@ -481,7 +479,7 @@ draw_box_animation (MetaScreen     *screen,    /* Do this only after we get the pixbuf from the server,     * so that the animation doesn't get truncated.     */ -  g_get_current_time (&context->start_time); +  context->start_time = g_get_real_time ();    /* Add the timeout - a short one, could even use an idle,     * but this is maybe more CPU-friendly. diff --git a/src/core/screen.c b/src/core/screen.c index 78a41d83..feaac951 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -2607,7 +2607,7 @@ remove_sequence (MetaScreen        *screen,  typedef struct  {    GSList *list; -  GTimeVal now; +  gint64 now;  } CollectTimedOutData;  /* This should be fairly long, as it should never be required unless @@ -2623,14 +2623,15 @@ collect_timed_out_foreach (void *element,  {    CollectTimedOutData *ctod = data;    SnStartupSequence *sequence = element; -  long tv_sec, tv_usec;    double elapsed; -  sn_startup_sequence_get_last_active_time (sequence, &tv_sec, &tv_usec); +  time_t tv_sec; +  suseconds_t  tv_usec; +  gint64 tv; -  elapsed = -    ((((double)ctod->now.tv_sec - tv_sec) * G_USEC_PER_SEC + -      (ctod->now.tv_usec - tv_usec))) / 1000.0; +  sn_startup_sequence_get_last_active_time (sequence, &tv_sec, &tv_usec); +  tv = (tv_sec * G_USEC_PER_SEC) + tv_usec; +  elapsed = (ctod->now - tv) / 1000.0;    meta_topic (META_DEBUG_STARTUP,                "Sequence used %g seconds vs. %g max: %s\n", @@ -2649,7 +2650,8 @@ startup_sequence_timeout (void *data)    GSList *tmp;    ctod.list = NULL; -  g_get_current_time (&ctod.now); + +  ctod.now = g_get_real_time ();    g_slist_foreach (screen->startup_sequences,                     collect_timed_out_foreach,                     &ctod); diff --git a/src/core/window-private.h b/src/core/window-private.h index 008979e5..5abef1e1 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -345,7 +345,7 @@ struct _MetaWindow    /* XSync update counter */    XSyncCounter sync_request_counter;    guint sync_request_serial; -  GTimeVal sync_request_time; +  gint64 sync_request_time;  #endif    /* Number of UnmapNotify that are caused by us, if diff --git a/src/core/window.c b/src/core/window.c index 83d0a33e..9dfe8634 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -408,8 +408,7 @@ meta_window_new_with_attrs (MetaDisplay       *display,  #ifdef HAVE_XSYNC    window->sync_request_counter = None;    window->sync_request_serial = 0; -  window->sync_request_time.tv_sec = 0; -  window->sync_request_time.tv_usec = 0; +  window->sync_request_time = 0;  #endif    window->screen = NULL; @@ -3429,7 +3428,7 @@ send_sync_request (MetaWindow *window)    XSendEvent (window->display->xdisplay,  	      window->xwindow, False, 0, (XEvent*) &ev); -  g_get_current_time (&window->sync_request_time); +  window->sync_request_time = g_get_real_time ();  }  #endif @@ -3838,8 +3837,7 @@ meta_window_move_resize_internal (MetaWindow          *window,  #ifdef HAVE_XSYNC        if (window->sync_request_counter != None &&  	  window->display->grab_sync_request_alarm != None && -	  window->sync_request_time.tv_usec == 0 && -	  window->sync_request_time.tv_sec == 0) +          window->sync_request_time == 0)  	{  	  /* turn off updating */  	  if (window->display->compositor) @@ -7141,38 +7139,27 @@ meta_window_titlebar_is_onscreen (MetaWindow *window)  }  static double -timeval_to_ms (const GTimeVal *timeval) +time_diff (const gint64 first, +           const gint64 second)  { -  return (timeval->tv_sec * G_USEC_PER_SEC + timeval->tv_usec) / 1000.0; -} - -static double -time_diff (const GTimeVal *first, -	   const GTimeVal *second) -{ -  double first_ms = timeval_to_ms (first); -  double second_ms = timeval_to_ms (second); - -  return first_ms - second_ms; +  return (first - second) / 1000.0;  }  static gboolean  check_moveresize_frequency (MetaWindow *window,  			    gdouble    *remaining)  { -  GTimeVal current_time; - -  g_get_current_time (¤t_time); +  gint64 current_time; +  current_time = g_get_real_time ();  #ifdef HAVE_XSYNC    if (!window->disable_sync &&        window->display->grab_sync_request_alarm != None)      { -      if (window->sync_request_time.tv_sec != 0 || -	  window->sync_request_time.tv_usec != 0) -	{ -	  double elapsed = -	    time_diff (¤t_time, &window->sync_request_time); +      if (window->sync_request_time != 0) +        { +          double elapsed = +            time_diff (current_time, window->sync_request_time);  	  if (elapsed < 1000.0)  	    { @@ -7208,7 +7195,7 @@ check_moveresize_frequency (MetaWindow *window,        const double ms_between_resizes = 1000.0 / max_resizes_per_second;        double elapsed; -      elapsed = time_diff (¤t_time, &window->display->grab_last_moveresize_time); +      elapsed = time_diff (current_time, window->display->grab_last_moveresize_time);        if (elapsed >= 0.0 && elapsed < ms_between_resizes)  	{ @@ -7775,7 +7762,7 @@ update_resize (MetaWindow *window,    /* Store the latest resize time, if we actually resized. */    if (window->rect.width != old.width || window->rect.height != old.height) -    g_get_current_time (&window->display->grab_last_moveresize_time); +    window->display->grab_last_moveresize_time = g_get_real_time ();  }  typedef struct @@ -7821,6 +7808,7 @@ check_use_this_motion_notify (MetaWindow *window,                        "Arrived at event with time %u (waiting for %u), using it\n",                        (unsigned int)event->xmotion.time,                        window->display->grab_motion_notify_time); +            window->display->grab_motion_notify_time = 0;            return TRUE;          } @@ -7885,8 +7873,7 @@ meta_window_handle_mouse_grab_op_event (MetaWindow *window,         * busy with a pagefault or a long computation).         */        window->disable_sync = FALSE; -      window->sync_request_time.tv_sec = 0; -      window->sync_request_time.tv_usec = 0; +      window->sync_request_time = 0;        /* This means we are ready for another configure. */        switch (window->display->grab_op) | 
