Fix possible issue with missing outputs.
authorLeif Middelschulte <leif.middelschulte@gmail.com>
Thu, 29 Dec 2011 18:29:52 +0000 (18:29 +0000)
committerLeif Middelschulte <leif.middelschulte@gmail.com>
Thu, 29 Dec 2011 18:29:52 +0000 (18:29 +0000)
SVN revision: 66638

src/bin/e_randr.c

index 10bfce2dff1f87b3d0d70340db14a3ab3a04fe19..4457267478659b1a7c58e392943d4e190f913013 100644 (file)
@@ -1947,7 +1947,7 @@ _e_randr_crtc_outputs_refs_update(E_Randr_Crtc_Info *crtc_info)
    E_Randr_Output_Info *output_info;
    int i, noutputs;
 
-   if (!e_randr_screen_info->rrvd_info.randr_info_12->outputs) return;
+   EINA_SAFETY_ON_NULL_RETURN(e_randr_screen_info->rrvd_info.randr_info_12->outputs);
 
    //get references to output_info structs which are related to this CRTC
    if ((outputs = ecore_x_randr_crtc_outputs_get(e_randr_screen_info->root, crtc_info->xid, &noutputs)))
@@ -1956,7 +1956,13 @@ _e_randr_crtc_outputs_refs_update(E_Randr_Crtc_Info *crtc_info)
         crtc_info->outputs = NULL;
         for (i = 0; i < noutputs; i++)
           {
-             output_info = _e_randr_output_info_get(outputs[i]);
+             if (!(output_info = _e_randr_output_info_get(outputs[i])))
+               {
+                  output_info = _e_randr_output_info_new(1);
+                  output_info->xid = outputs[i];
+                  _e_randr_output_info_set(output_info);
+                  e_randr_screen_info->rrvd_info.randr_info_12->outputs = eina_list_append(e_randr_screen_info->rrvd_info.randr_info_12->outputs, output_info);
+               }
              crtc_info->outputs = eina_list_append(crtc_info->outputs, output_info);
              output_info->crtc = crtc_info;
           }