~apachelogger/+junk/plymouth-stop-kdm

« back to all changes in this revision

Viewing changes to src/plugins/renderers/drm/ply-renderer-nouveau-driver.c

  • Committer: Scott James Remnant
  • Date: 2010-03-25 16:44:25 UTC
  • mfrom: (1016.2.1 upstream)
  • Revision ID: scott@netsplit.com-20100325164425-daotztzazohftmt4
Merge upstream 0.8.1 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
60
60
  unsigned long width;
61
61
  unsigned long height;
62
62
  unsigned long row_stride;
 
63
 
 
64
  uint32_t added_fb : 1;
63
65
};
64
66
 
65
67
struct _ply_renderer_driver
81
83
  if (nouveau_device_open_existing (&driver->device, true,
82
84
                                    driver->device_fd, 0) < 0)
83
85
    {
 
86
      ply_trace ("could not open nouveau device");
84
87
      free (driver);
85
88
      return NULL;
86
89
    }
96
99
{
97
100
  ply_hashtable_free (driver->buffers);
98
101
 
 
102
  ply_trace ("closing nouveau device");
99
103
  nouveau_device_close (&driver->device);
100
104
  free (driver);
101
105
}
117
121
  buffer->height = height;
118
122
  buffer->row_stride = row_stride;
119
123
 
 
124
  ply_trace ("returning %lux%lu buffer with stride %lu",
 
125
             width, height, row_stride);
 
126
 
120
127
  return buffer;
121
128
}
122
129
 
131
138
  fb = drmModeGetFB (driver->device_fd, buffer_id);
132
139
 
133
140
  if (fb == NULL)
134
 
    return NULL;
 
141
    {
 
142
      ply_trace ("could not get FB with buffer id %u", buffer_id);
 
143
      return NULL;
 
144
    }
135
145
 
136
146
  if (nouveau_bo_wrap (driver->device,
137
147
                       fb->handle, &buffer_object) < 0)
138
148
    {
 
149
      ply_trace ("could not create buffer object from handle %lu",
 
150
                 (unsigned long) fb->handle);
139
151
      drmModeFreeFB (fb);
140
152
      return NULL;
141
153
    }
171
183
 
172
184
  if (buffer == NULL)
173
185
    {
 
186
      ply_trace ("could not fetch buffer %u, creating one", buffer_id);
174
187
      buffer = ply_renderer_buffer_new_from_id (driver, buffer_id);
175
188
 
176
189
      if (buffer == NULL)
177
 
        return false;
 
190
        {
 
191
          ply_trace ("could not create buffer either %u", buffer_id);
 
192
          return false;
 
193
        }
178
194
 
179
195
      ply_hashtable_insert (driver->buffers,
180
196
                            (void *) (uintptr_t) buffer_id,
190
206
  if (row_stride != NULL)
191
207
    *row_stride = buffer->row_stride;
192
208
 
 
209
  ply_trace ("fetched %lux%lu buffer with stride %lu",
 
210
             buffer->width, buffer->height, buffer->row_stride);
193
211
  return true;
194
212
}
195
213
 
234
252
  buffer = ply_renderer_buffer_new (driver,
235
253
                                    buffer_object, buffer_id,
236
254
                                    width, height, *row_stride);
 
255
  buffer->added_fb = true;
237
256
  ply_hashtable_insert (driver->buffers,
238
257
                        (void *) (uintptr_t) buffer_id,
239
258
                        buffer);
301
320
 
302
321
  assert (buffer != NULL);
303
322
 
304
 
  drmModeRmFB (driver->device_fd, buffer->id);
 
323
  if (buffer->added_fb)
 
324
    drmModeRmFB (driver->device_fd, buffer->id);
305
325
 
306
326
  nouveau_bo_ref (NULL, &buffer->object);
307
327