Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/compositor/compositor.c

    rfeeac0d rcf02eaf  
    335335        }
    336336
    337         list_foreach(viewport_list, link, viewport_t, vp) {
     337        list_foreach(viewport_list, link) {
     338                viewport_t *vp = list_get_instance(link, viewport_t, link);
    338339                sysarg_t w_vp, h_vp;
    339340                surface_get_resolution(vp->surface, &w_vp, &h_vp);
     
    353354        fibril_mutex_lock(&pointer_list_mtx);
    354355
    355         list_foreach(pointer_list, link, pointer_t, ptr) {
     356        list_foreach(pointer_list, link) {
     357                pointer_t *ptr = list_get_instance(link, pointer_t, link);
    356358                ptr->pos.x = ptr->pos.x > viewport_bound_rect.x ? ptr->pos.x : viewport_bound_rect.x;
    357359                ptr->pos.y = ptr->pos.y > viewport_bound_rect.y ? ptr->pos.y : viewport_bound_rect.y;
     
    372374        fibril_mutex_lock(&pointer_list_mtx);
    373375
    374         list_foreach(viewport_list, link, viewport_t, vp) {
     376        list_foreach(viewport_list, link) {
     377
    375378                /* Determine what part of the viewport must be updated. */
     379                viewport_t *vp = list_get_instance(link, viewport_t, link);
    376380                sysarg_t x_dmg_vp, y_dmg_vp, w_dmg_vp, h_dmg_vp;
    377381                surface_get_resolution(vp->surface, &w_dmg_vp, &h_dmg_vp);
     
    442446                        }
    443447
    444                         list_foreach(pointer_list, link, pointer_t, ptr) {
     448                        list_foreach(pointer_list, link) {
     449
     450                                pointer_t *ptr = list_get_instance(link, pointer_t, link);
    445451                                if (ptr->ghost.surface) {
    446452
     
    516522                        }
    517523
    518                         list_foreach(pointer_list, link, pointer_t, ptr) {
     524                        list_foreach(pointer_list, link) {
    519525
    520526                                /* Determine what part of the pointer intersects with the
    521527                                 * updated area of the current viewport. */
     528                                pointer_t *ptr = list_get_instance(link, pointer_t, link);
    522529                                sysarg_t x_dmg_ptr, y_dmg_ptr, w_dmg_ptr, h_dmg_ptr;
    523530                                surface_t *sf_ptr = ptr->cursor.states[ptr->state];
     
    562569
    563570        /* Notify visualizers about updated regions. */
    564         list_foreach(viewport_list, link, viewport_t, vp) {
     571        list_foreach(viewport_list, link) {
     572                viewport_t *vp = list_get_instance(link, viewport_t, link);
    565573                sysarg_t x_dmg_vp, y_dmg_vp, w_dmg_vp, h_dmg_vp;
    566574                surface_get_damaged_region(vp->surface, &x_dmg_vp, &y_dmg_vp, &w_dmg_vp, &h_dmg_vp);
     
    623631
    624632        fibril_mutex_lock(&pointer_list_mtx);
    625         list_foreach(pointer_list, link, pointer_t, pointer) {
     633        list_foreach(pointer_list, link) {
     634                pointer_t *pointer = list_get_instance(link, pointer_t, link);
    626635                if (pointer->id == pos_id) {
    627636                        pointer->grab_flags = pointer->pressed ? grab_flags : GF_EMPTY;
     
    701710{
    702711        fibril_mutex_lock(&window_list_mtx);
    703 
    704         list_foreach(window_list, link, window_t, window) {
     712        window_t *window = NULL;
     713        list_foreach(window_list, link) {
     714                window = list_get_instance(link, window_t, link);
    705715                if (window == target) {
    706716                        prodcons_produce(&window->queue, &event->link);
    707                         fibril_mutex_unlock(&window_list_mtx);
    708                         return;
    709                 }
    710         }
    711 
     717                }
     718        }
     719        if (!window) {
     720                free(event);
     721        }
    712722        fibril_mutex_unlock(&window_list_mtx);
    713         free(event);
    714723}
    715724
     
    854863        window_t *win = NULL;
    855864        fibril_mutex_lock(&window_list_mtx);
    856         list_foreach(window_list, link, window_t, cur) {
     865        list_foreach(window_list, link) {
     866                window_t *cur = list_get_instance(link, window_t, link);
    857867                if (cur->in_dsid == service_id || cur->out_dsid == service_id) {
    858868                        win = cur;
     
    9971007                /* Close all clients and their windows. */
    9981008                fibril_mutex_lock(&window_list_mtx);
    999                 list_foreach(window_list, link, window_t, win) {
     1009                list_foreach(window_list, link) {
     1010                        window_t *win = list_get_instance(link, window_t, link);
    10001011                        window_event_t *event = (window_event_t *) malloc(sizeof(window_event_t));
    10011012                        if (event) {
     
    10231034        viewport_t *vp = NULL;
    10241035        fibril_mutex_lock(&viewport_list_mtx);
    1025         list_foreach(viewport_list, link, viewport_t, cur) {
     1036        list_foreach(viewport_list, link) {
     1037                viewport_t *cur = list_get_instance(link, viewport_t, link);
    10261038                if (cur->dsid == (service_id_t) IPC_GET_ARG1(*icall)) {
    10271039                        vp = cur;
     
    15591571
    15601572        /* Determine the window which the mouse click belongs to. */
    1561         list_foreach(window_list, link, window_t, cw) {
    1562                 win = cw;
     1573        list_foreach(window_list, link) {
     1574                win = list_get_instance(link, window_t, link);
    15631575                if (win->surface) {
    15641576                        surface_get_resolution(win->surface, &width, &height);
Note: See TracChangeset for help on using the changeset viewer.